Деградация переопределения доступа к задаче

Обсуждаем TrackStudio по-русски

Деградация переопределения доступа к задаче

Postby a-b-c » Mon Feb 16, 2015 12:46 pm

Добрый день!

По ряду категорий задач с помощью скриптов происходит переопределение доступа (создание 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 (смотри стектрейс выше).
Last edited by a-b-c on Mon Feb 16, 2015 3:29 pm, edited 1 time in total.
TrackStudio 5.0.5 20150422 SA x64/Windows/PostgreSQL 9.4
a-b-c
 
Posts: 695
Joined: Fri Jul 10, 2009 10:15 am
Location: Moscow, Russia

Re: Деградация переопределения доступа к задаче

Postby Petr » Mon Feb 16, 2015 1:09 pm

можете код прислать скрипта. мы проанализируем как такая ситуация может воспроизвестись.
Стань Java программистом с www.job4j.ru
Petr
 
Posts: 2929
Joined: Wed Aug 12, 2009 4:38 pm

Re: Деградация переопределения доступа к задаче

Postby a-b-c » Mon Feb 16, 2015 5:11 pm

Пётр, код примерно следующий, стоит на after create task.
Code: Select all
import com.trackstudio.app.adapter.AdapterManager;
import com.trackstudio.app.csv.CSVImport;
import com.trackstudio.app.session.SessionContext;
import com.trackstudio.exception.*;
import com.trackstudio.kernel.manager.*;
import com.trackstudio.kernel.cache.*;
import com.trackstudio.secured.*;
import com.trackstudio.securedkernel.*;
import com.trackstudio.startup.Config;
import com.trackstudio.tools.formatter.DateFormatter;
import com.trackstudio.tools.formatter.HourFormatter;
import com.trackstudio.tools.textfilter.HTMLEncoder;
import com.trackstudio.model.Acl;
import com.trackstudio.app.UdfValue;
import java.lang.Boolean;
import java.lang.Byte;
import java.lang.Character;
import java.lang.Class;
import java.lang.Comparable;
import java.lang.Double;
import java.lang.Exception;
import java.lang.Float;
import java.lang.Integer;
import java.lang.Long;
import java.lang.Math;
import java.lang.Number;
import java.lang.Object;
import java.lang.Short;
import java.lang.StrictMath;
import java.lang.String;
import java.lang.StringBuilder;
import java.sql.*;
import java.text.*;
import java.util.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

   SessionContext sc = task.getSecure();

   String MoscowTransport="ff80808122506c970122507f3bab0023";
   String MT2                    ="4028e4822aa9f92f012ab392127315e3"; 
   String rootId                 ="1";

        String MediaServiceGroupId   ="4028808424fa6e650124fd5f483702ae";
   AclManager aclManager = KernelManager.getAcl();
   String aclId1 = aclManager.getAcl().createAcl(task.getId(), null, null, MoscowTransport,rootId);
   aclManager.updateAcl(aclId1, MediaServiceGroupId, false);
   String aclId2 = aclManager.getAcl().createAcl(task.getId(), null, null, MT2,rootId);
   aclManager.updateAcl(aclId2, MediaServiceGroupId, false);

   KernelManager.getTask().updateTask(task.getId(),
               SafeString.createSafeString(""),
               SafeString.createSafeString(task.getName()),
               SafeString.createSafeString(""),
               0L,
               null,
               task.getPriorityId(),
               task.getParentId(),
               null,
               MoscowTransport,
               null,
               null);
   return task;
TrackStudio 5.0.5 20150422 SA x64/Windows/PostgreSQL 9.4
a-b-c
 
Posts: 695
Joined: Fri Jul 10, 2009 10:15 am
Location: Moscow, Russia

Re: Деградация переопределения доступа к задаче

Postby Petr » Fri Mar 06, 2015 10:17 am

Посмотрел в коде нашел "nullusersource". но найти для чего он используется не получилось.
А можете провести эксперимент. заменить все значения "nullusersource" на нормальную ссылку. и поработать в таком режиме.
Стань Java программистом с www.job4j.ru
Petr
 
Posts: 2929
Joined: Wed Aug 12, 2009 4:38 pm

Re: Деградация переопределения доступа к задаче

Postby dpochtarev » Thu May 05, 2016 2:01 pm

Данный элемент используется при создании базы для тестирования. Проверьте пользователей с такими ролями и удалите их, если они не используются. Либо замените ссылки на роль анонимного пользователя.
dpochtarev
 
Posts: 282
Joined: Wed Aug 22, 2012 4:35 pm


Return to TrackStudio Support [Russian]

Who is online

Users browsing this forum: No registered users and 9 guests

cron