По ряду категорий задач с помощью скриптов происходит переопределение доступа (создание acl).
Некоторые переопределения не работают (хотя изначально они работали, и по другим задачам всё ок).
При открытии страницы просмотра переопределенных прав получаю следующий стектрейс:
System Information:
Java Information:
Java Version: 1.7.0_67
Java Vendor: Oracle Corporation
Java Specification Vendor: Oracle Corporation
Java Specification Version: 1.7
Java Home: c:\program files\java\jre7
Java Classpath:
Servlet Container Information:
Servlet Version: 25
AS Vendor: jetty/6.1.26
Virtual Machine Information:
VM Vendor: Oracle Corporation
VM: Java HotSpot(TM) 64-Bit Server VM
VM Version: 24.65-b04
Runtime Version: 1.7.0_67-b01
VM Specification Version: 1.7
VM Info: mixed mode
System information:
OS Name: amd64-Windows 2003(5.2)
Total Memory: 8370737152
Free Memory: 3091486816
Product Information:
Version: 5.0.2.19700101
Licensee: #########
License Type: SERVER
Database Information:
Database: PostgreSQL
Database version:9.3.4
Database major version:9
Database minor version:3
Database driver name:PostgreSQL Native Driver
Database driver version:PostgreSQL 9.3 JDBC4.1 (build 1102)
Database driver major version:9
Database driver minor version:3
Hibernate Dialect: org.hibernate.dialect.PostgreSQLDialect
Hibernate Driver: org.postgresql.Driver
Expire Date: 10/12/15 11:00 PM
Stack Trace:
java.lang.NullPointerException
at com.trackstudio.action.task.ACLAction.page(ACLAction.java:196)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
at com.trackstudio.action.TSDispatchAction.execute(TSDispatchAction.java:72)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
at com.trackstudio.action.TSStrutsServlet.doGet(TSStrutsServlet.java:36)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1221)
at jcifs.http.NtlmHttpFilter.doFilter(NtlmHttpFilter.java:130)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
at com.trackstudio.filters.CompressResponseFilter.doFilter(CompressResponseFilter.java:64)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Для одной такой задач посмотрел, что у нас в базе (Postgres), вижу следующие строки:
acl_id: "402881854a7db4ea014a813a3858117e";
acl_task: "402881854a788e8c014a7c7718cc1987";
acl_to_user: "";
acl_usersource: "nullusersource";
acl_owner: "1";
acl_override: NULL;
acl_prstatus: "";
Выделил все ACL, у которых acl_usersource = "nullusersource" - получил 110 задач (из 35834 задач, у которых в принципе есть acl), выборочно проверил - у всех повторяется та же ошибка.
В связи с чем вопрос:
1) как исправить старые задачи? Судя по всему, никак (я не вижу информации, на основании которой можно было это сделать), но вдруг я не вижу всей картины.
2) как сделать так, чтобы новые задачи не портились? Ни один пользователь, ни одна роль не удалялась, непонятно, как в принципе могли эти 110 задач испортиться, да так, что я даже не могу эти права доступа исправить через интерфейс TrackStudio (смотри стектрейс выше).