Author: remy.maucherat(a)jboss.com
Date: 2009-06-22 10:52:50 -0400 (Mon, 22 Jun 2009)
New Revision: 1125
Modified:
trunk/java/org/apache/catalina/session/PersistentManagerBase.java
trunk/java/org/apache/catalina/session/StandardSession.java
trunk/java/org/apache/catalina/valves/PersistentValve.java
Log:
- Persistent manager access count fixes.
Modified: trunk/java/org/apache/catalina/session/PersistentManagerBase.java
===================================================================
--- trunk/java/org/apache/catalina/session/PersistentManagerBase.java 2009-06-22 14:51:28
UTC (rev 1124)
+++ trunk/java/org/apache/catalina/session/PersistentManagerBase.java 2009-06-22 14:52:50
UTC (rev 1125)
@@ -1053,11 +1053,10 @@
int timeIdle = // Truncate, do not round up
(int) ((timeNow - session.getLastAccessedTime()) / 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 (session.accessCount != null &&
+ session.accessCount.get() > 0) {
+ // Session is currently being accessed - skip it
+ continue;
}
if (log.isDebugEnabled())
log.debug(sm.getString
@@ -1099,24 +1098,24 @@
long timeNow = System.currentTimeMillis();
for (int i = 0; i < sessions.length && toswap > 0; i++) {
- synchronized (sessions[i]) {
+ StandardSession session = (StandardSession) sessions[i];
+ synchronized (session) {
int timeIdle = // Truncate, do not round up
- (int) ((timeNow - sessions[i].getLastAccessedTime()) / 1000L);
+ (int) ((timeNow - session.getThisAccessedTimeInternal()) / 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 (session.accessCount != null &&
+ session.accessCount.get() > 0) {
+ // Session is currently being accessed - skip it
+ continue;
}
if(log.isDebugEnabled())
log.debug(sm.getString
("persistentManager.swapTooManyActive",
- sessions[i].getIdInternal(), new Integer(timeIdle)));
+ session.getIdInternal(), new Integer(timeIdle)));
try {
- swapOut(sessions[i]);
+ swapOut(session);
} catch (IOException e) {
- ; // This is logged in writeSession()
+ // This is logged in writeSession()
}
toswap--;
}
Modified: trunk/java/org/apache/catalina/session/StandardSession.java
===================================================================
--- trunk/java/org/apache/catalina/session/StandardSession.java 2009-06-22 14:51:28 UTC
(rev 1124)
+++ trunk/java/org/apache/catalina/session/StandardSession.java 2009-06-22 14:52:50 UTC
(rev 1125)
@@ -395,7 +395,32 @@
* session, as the number of milliseconds since midnight, January 1, 1970
* GMT. Actions that your application takes, such as getting or setting
* a value associated with the session, do not affect the access time.
+ * This one gets updated whenever a request starts.
*/
+ public long getThisAccessedTime() {
+
+ if (!isValidInternal()) {
+ throw new IllegalStateException
+ (sm.getString("standardSession.getThisAccessedTime.ise"));
+ }
+
+ return (this.thisAccessedTime);
+ }
+
+ /**
+ * Return the last client access time without invalidation check
+ * @see #getThisAccessedTime().
+ */
+ public long getThisAccessedTimeInternal() {
+ return (this.thisAccessedTime);
+ }
+
+ /**
+ * Return the last time the client sent a request associated with this
+ * session, as the number of milliseconds since midnight, January 1, 1970
+ * GMT. Actions that your application takes, such as getting or setting
+ * a value associated with the session, do not affect the access time.
+ */
public long getLastAccessedTime() {
if (!isValidInternal()) {
Modified: trunk/java/org/apache/catalina/valves/PersistentValve.java
===================================================================
--- trunk/java/org/apache/catalina/valves/PersistentValve.java 2009-06-22 14:51:28 UTC
(rev 1124)
+++ trunk/java/org/apache/catalina/valves/PersistentValve.java 2009-06-22 14:52:50 UTC
(rev 1125)
@@ -137,6 +137,7 @@
manager.add(session);
// ((StandardSession)session).activate();
session.access();
+ session.endAccess();
}
}
}
Show replies by date