History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: XPR-96
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Critical Critical
Assignee: Mateusz Prokopowicz
Reporter: Jacques Morel
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
xplanner

Logout does not clean up completely and cause authorization of simple tasks to become extremely slow

Created: 01/Sep/05 02:30 AM   Updated: 30/Nov/05 02:23 AM
Component/s: None
Affects Version/s: 0.7
Fix Version/s: 0.7

Time Tracking:
Not Specified

JDK version and platform: 1.4.2
Database: mysql 4.1
Application server: tomcat 5.0


 Description  « Hide
Steps:
On staging with build 157
1. Log in as sysadmin.
2. Set a password to someone that is working/will be working on some tasks (With the current staging database I used mateusz user -> password test)
3. Go to see mateusz page:
=> Observe that the action links are there
4. Logout
5. Login as mateusz
6. Goto see mateusz page
=> Observe that the action links are NOT there **** PROBLEM 1 ****
7. Click on a task
8. Edit time on that task
=> Takes 10mn+ to come up **** PROBLEM 2 ****
9. Once the page comes up (if you won't run out of memory or patience), the same operation won't be slow anymore (the loaded permissions state is good or all permissions have been cached).

A stack dump shows that all time is spent in AuthorizerImpl.addProjectsPermissions(AuthorizerImpl.java:156) See below for the whole stacktrace.

Implementation note:
1. Investigate PROBLEM 2 through this scenario so we have a chance to see if it is an abherent state produced by PROBLEM 1 (i.e. PROBLEM 2 would not appear if PROBLEM 1 was not there).
2.1 PROBLEM 2 is not because of PROBLEM 1: fix PROBLEM 2 first since we know how to reproduce it.
2.2 PROBLEM 2 is only because of PROBLEM 1: fix PROBLEM 1 and just verify we don't get PROBLEM 2 anymore when PROBLEM 1 is fixed.

--------------------------------------
Stacktrace while in PROBLEM 2

"http-80-Processor25" daemon prio=5 tid=0x54d7db50 nid=0x1bc0 runnable [5602e000..5602fd88]
        at java.lang.System.identityHashCode(Native Method)
        at net.sf.hibernate.util.IdentityMap$IdentityKey.hashCode(IdentityMap.java:103)
        at java.util.HashMap.hash(HashMap.java:261)
        at java.util.HashMap.get(HashMap.java:317)
        at org.apache.commons.collections.SequencedHashMap.get(Unknown Source)
        at net.sf.hibernate.util.IdentityMap.get(IdentityMap.java:126)
        at net.sf.hibernate.impl.SessionImpl.getCollectionEntry(SessionImpl.java:694)
        at net.sf.hibernate.impl.SessionImpl.updateUnreachableCollection(SessionImpl.java:2865)
        at net.sf.hibernate.impl.SessionImpl.flushCollections(SessionImpl.java:2754)
        at net.sf.hibernate.impl.SessionImpl.flushEverything(SessionImpl.java:2225)
        at net.sf.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:1769)
        at net.sf.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:1536)
        at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1501)
        at net.sf.hibernate.impl.QueryImpl.list(QueryImpl.java:39)
        at com.technoetic.xplanner.security.auth.AuthorizerImpl.addProjectsPermissions(AuthorizerImpl.java:156)
        at com.technoetic.xplanner.security.auth.AuthorizerImpl.getPermissionsForPrincipal(AuthorizerImpl.java:128)
        at com.technoetic.xplanner.security.auth.AuthorizerImpl.hasPermission(AuthorizerImpl.java:61)
        at com.technoetic.xplanner.tags.PersonOptionsTag.accept(PersonOptionsTag.java:40)
        at com.technoetic.xplanner.tags.PersonOptionsTag.getOptions(PersonOptionsTag.java:29)
        at com.technoetic.xplanner.tags.OptionsTag.doEndTag(OptionsTag.java:29)
        at org.apache.jsp.WEB_002dINF.jsp.edit.editTimeEntries_jsp._jspx_meth_xplanner_personOptions_0(editTimeEntries_jsp.java:994)
        at org.apache.jsp.WEB_002dINF.jsp.edit.editTimeEntries_jsp._jspService(editTimeEntries_jsp.java:468)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704)
        at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474)
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:409)
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
        at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
        at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:274)
        at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
        at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:320)
        at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
        at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
        at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at com.technoetic.xplanner.filters.RequestCharacterEncodingFilter.doFilter(RequestCharacterEncodingFilter.java:37)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at com.technoetic.xplanner.security.filter.AbstractSecurityFilter.doFilter(AbstractSecurityFilter.java:51)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at com.technoetic.xplanner.filters.ServletRequestFilter.doFilter(ServletRequestFilter.java:24)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at com.technoetic.xplanner.db.hibernate.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:62)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:534)

 All   Comments   Work Log   Change History      Sort Order: Ascending order - Click to sort in descending order
There are no comments yet on this issue.