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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org