You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2010/11/18 00:24:25 UTC

svn commit: r1036281 - in /tomcat/trunk/java/org/apache/catalina/session: ManagerBase.java StandardSession.java

Author: markt
Date: Wed Nov 17 23:24:25 2010
New Revision: 1036281

URL: http://svn.apache.org/viewvc?rev=1036281&view=rev
Log:
Refactor the calculation of session manager statistics to the session manager as suggested by kkolinko

Modified:
    tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java
    tomcat/trunk/java/org/apache/catalina/session/StandardSession.java

Modified: tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java?rev=1036281&r1=1036280&r2=1036281&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java (original)
+++ tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java Wed Nov 17 23:24:25 2010
@@ -1003,6 +1003,25 @@ public abstract class ManagerBase extend
      */
     @Override
     public void remove(Session session) {
+        
+        // If the session has expired - as opposed to just being removed from
+        // the manager because it is being persisted - update the expired stats
+        if (!session.isValid()) {
+            long timeNow = System.currentTimeMillis();
+            int timeAlive = (int) ((timeNow - session.getCreationTime())/1000);
+            synchronized (this) {
+                if (timeAlive > getSessionMaxAliveTime()) {
+                    setSessionMaxAliveTime(timeAlive);
+                }
+                long numExpired = getExpiredSessions();
+                numExpired++;
+                setExpiredSessions(numExpired);
+                int average = getSessionAverageAliveTime();
+                average = (int) (((average * (numExpired-1)) + timeAlive)/numExpired);
+                setSessionAverageAliveTime(average);
+            }
+        }
+
         if (session.getIdInternal() != null) {
             sessions.remove(session.getIdInternal());
         }

Modified: tomcat/trunk/java/org/apache/catalina/session/StandardSession.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/StandardSession.java?rev=1036281&r1=1036280&r2=1036281&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/StandardSession.java (original)
+++ tomcat/trunk/java/org/apache/catalina/session/StandardSession.java Wed Nov 17 23:24:25 2010
@@ -835,24 +835,6 @@ public class StandardSession
             }
             setValid(false);
 
-            /*
-             * Compute how long this session has been alive, and update
-             * session manager's related properties accordingly
-             */
-            long timeNow = System.currentTimeMillis();
-            int timeAlive = (int) ((timeNow - creationTime)/1000);
-            synchronized (manager) {
-                if (timeAlive > manager.getSessionMaxAliveTime()) {
-                    manager.setSessionMaxAliveTime(timeAlive);
-                }
-                long numExpired = manager.getExpiredSessions();
-                numExpired++;
-                manager.setExpiredSessions(numExpired);
-                int average = manager.getSessionAverageAliveTime();
-                average = (int) (((average * (numExpired-1)) + timeAlive)/numExpired);
-                manager.setSessionAverageAliveTime(average);
-            }
-
             // Remove this session from our manager's active sessions
             manager.remove(this);
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org