Author: markt
Date: Sat Jun 13 19:05:56 2009
New Revision: 784453
URL: http://svn.apache.org/viewvc?rev=784453&view=rev
Log:
Enhancements to fix for
https://issues.apache.org/bugzilla/show_bug.cgi?id=43343 based on kkolinko's
review
Modified:
tomcat/trunk/java/org/apache/catalina/session/PersistentManagerBase.java
tomcat/trunk/webapps/docs/config/manager.xml
Modified:
tomcat/trunk/java/org/apache/catalina/session/PersistentManagerBase.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/PersistentManagerBase.java?rev=784453&r1=784452&r2=784453&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/PersistentManagerBase.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/session/PersistentManagerBase.java
Sat Jun 13 19:05:56 2009
@@ -1054,12 +1054,11 @@
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 (session.accessCount != null &&
+ session.accessCount.get() > 0) {
+ // Session is currently being accessed - skip it
+ continue;
+ }
if (log.isDebugEnabled())
log.debug(sm.getString
("persistentManager.swapMaxIdle",
@@ -1100,22 +1099,22 @@
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].getThisAccessedTime()) /
1000L);
+ (int) ((timeNow - session.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 (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()
}
Modified: tomcat/trunk/webapps/docs/config/manager.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/manager.xml?rev=784453&r1=784452&r2=784453&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/config/manager.xml (original)
+++ tomcat/trunk/webapps/docs/config/manager.xml Sat Jun 13 19:05:56 2009
@@ -165,6 +165,12 @@
has not been thoroughly tested, and should be considered experimental!
</strong></em></p>
+ <p><strong>NOTE:</strong> You must set either the
+ <code>org.apache.catalina.session.StandardSession.ACTIVITY_CHECK</code> or
+ <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>
+ <a href="systemprops.html">system properties</a> to <code>true</code> for
+ the persistent manager to work correctly.</p>
+
<p>The persistent implementation of <strong>Manager</strong> is
<strong>org.apache.catalina.session.PersistentManager</strong>. In
addition to the usual operations of creating and deleting sessions, a
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]