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