Author: markt Date: Sat Nov 4 16:33:02 2006 New Revision: 471306 URL: http://svn.apache.org/viewvc?view=rev&rev=471306 Log: Fix bug 37356. I know concern has been expressed about using syncs here. I have tested the impact of using syncs with both an artificial test case that just calls access() followed by endAccess() on the StandardSession object and with JMeter using different numbers of threads to make a request in the same session. For the single thread case: - JMeter impact was negligible. - With the wrapper, it was about 150 nanoseconds per request which explains why the JMeter test didn't shown anything. For two threads: - JMeter impact was about 9 microseconds (0.4%) per request - The wrapper was much higher at 50 milliseconds but this is expected given the nature of the test is such that far more contention than normal will be seen For five threads - JMeter impact was about 75 microseconds (4%) per request
My conclusion is that the uncontended impact is negligible and the contended impact is sufficiently low for syncs to be acceptable. Obviously, these figures are for my hardware but it is fairly standard so the figures should be typical. Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/session/StandardSession.java tomcat/container/tc5.5.x/webapps/docs/changelog.xml Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/session/StandardSession.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/session/StandardSession.java?view=diff&rev=471306&r1=471305&r2=471306 ============================================================================== --- tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/session/StandardSession.java (original) +++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/session/StandardSession.java Sat Nov 4 16:33:02 2006 @@ -275,6 +275,7 @@ */ protected transient int accessCount = 0; + private Object lock = new Object(); // ----------------------------------------------------- Session Properties @@ -611,7 +612,9 @@ evaluateIfValid(); - accessCount++; + synchronized (lock) { + accessCount++; + } } @@ -622,7 +625,9 @@ public void endAccess() { isNew = false; - accessCount--; + synchronized (lock) { + accessCount--; + } } Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/webapps/docs/changelog.xml?view=diff&rev=471306&r1=471305&r2=471306 ============================================================================== --- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original) +++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Sat Nov 4 16:33:02 2006 @@ -62,6 +62,9 @@ StandardWrapper. (markt) </fix> <fix> + <bug>37356</bug>: Ensure sessions time out correctly. (markt) + </fix> + <fix> <bug>40528</bug>: Add missing message localisations as provided by Ben Clifford. (markt) </fix> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]