
|
If you were logged in you would be able to see more operations.
|
|
|
xplanner
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
|
|
| JDK version and platform: |
1.4.2
|
| Database: |
mysql 4.1
|
| Application server: |
tomcat 5.0
|
|
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)
|
|
Description
|
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) |
Show » |
| There are no comments yet on this issue.
|
|