From: markt Date: Mon, 25 May 2009 22:32:57 +0000 (+0000) Subject: Fix case B in bug 43343. Don't try to swap out a session that is being accessed. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=e875e0e6061209cd9024ade9781730b6d51a9e64;p=tomcat7.0 Fix case B in bug 43343. Don't try to swap out a session that is being accessed. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@778524 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/catalina/session/PersistentManagerBase.java b/java/org/apache/catalina/session/PersistentManagerBase.java index c2b5c426b..67ab71210 100644 --- a/java/org/apache/catalina/session/PersistentManagerBase.java +++ b/java/org/apache/catalina/session/PersistentManagerBase.java @@ -1054,6 +1054,12 @@ public abstract class PersistentManagerBase int timeIdle = // Truncate, do not round up (int) ((timeNow - session.getThisAccessedTime()) / 1000L); if (timeIdle > maxIdleSwap && timeIdle > minIdleSwap) { + if (sessions[i] instanceof StandardSession) { + if (((StandardSession) sessions[i]).accessCount.get() > 0) { + // Session is currently being accessed - skip it + continue; + } + } if (log.isDebugEnabled()) log.debug(sm.getString ("persistentManager.swapMaxIdle", @@ -1098,6 +1104,12 @@ public abstract class PersistentManagerBase int timeIdle = // Truncate, do not round up (int) ((timeNow - sessions[i].getThisAccessedTime()) / 1000L); if (timeIdle > minIdleSwap) { + if (sessions[i] instanceof StandardSession) { + if (((StandardSession) sessions[i]).accessCount.get() > 0) { + // Session is currently being accessed - skip it + continue; + } + } if(log.isDebugEnabled()) log.debug(sm.getString ("persistentManager.swapTooManyActive",