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]

Reply via email to