Author: markt
Date: Mon Jul 7 13:06:53 2014
New Revision: 1608448
URL: http://svn.apache.org/r1608448
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=56698
When persisting idle sessions, only persist newly idle sessions. Patch provided
by Felix Schumacher.
Added:
tomcat/tc7.0.x/trunk/test/org/apache/catalina/session/TestPersistentManager.java
- copied, changed from r1608443,
tomcat/trunk/test/org/apache/catalina/session/TestPersistentManager.java
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
tomcat/tc7.0.x/trunk/java/org/apache/catalina/session/PersistentManagerBase.java
tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
Merged /tomcat/trunk:r1608443
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/catalina/session/PersistentManagerBase.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/session/PersistentManagerBase.java?rev=1608448&r1=1608447&r2=1608448&view=diff
==============================================================================
---
tomcat/tc7.0.x/trunk/java/org/apache/catalina/session/PersistentManagerBase.java
(original)
+++
tomcat/tc7.0.x/trunk/java/org/apache/catalina/session/PersistentManagerBase.java
Mon Jul 7 13:06:53 2014
@@ -143,6 +143,12 @@ public abstract class PersistentManagerB
*/
private static String name = "PersistentManagerBase";
+ /**
+ * Key of the note of a session in which the timestamp of last backup is
stored.
+ */
+ private static final String PERSISTED_LAST_ACCESSED_TIME =
+
"org.apache.catalina.session.PersistentManagerBase.persistedLastAccessedTime";
+
/**
* Store object which will manage the Session store.
@@ -1021,6 +1027,12 @@ public abstract class PersistentManagerB
synchronized (session) {
if (!session.isValid())
continue;
+ long lastAccessedTime = session.getLastAccessedTime();
+ Long persistedLastAccessedTime =
+ (Long)
session.getNote(PERSISTED_LAST_ACCESSED_TIME);
+ if (persistedLastAccessedTime != null &&
+ lastAccessedTime ==
persistedLastAccessedTime.longValue())
+ continue;
int timeIdle;
if (StandardSession.LAST_ACCESS_AT_START) {
timeIdle = (int) ((timeNow -
session.getLastAccessedTime()) / 1000L);
@@ -1039,6 +1051,8 @@ public abstract class PersistentManagerB
} catch (IOException e) {
// This is logged in writeSession()
}
+ session.setNote(PERSISTED_LAST_ACCESSED_TIME,
+ Long.valueOf(lastAccessedTime));
}
}
}
Copied:
tomcat/tc7.0.x/trunk/test/org/apache/catalina/session/TestPersistentManager.java
(from r1608443,
tomcat/trunk/test/org/apache/catalina/session/TestPersistentManager.java)
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/catalina/session/TestPersistentManager.java?p2=tomcat/tc7.0.x/trunk/test/org/apache/catalina/session/TestPersistentManager.java&p1=tomcat/trunk/test/org/apache/catalina/session/TestPersistentManager.java&r1=1608443&r2=1608448&rev=1608448&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/session/TestPersistentManager.java
(original)
+++
tomcat/tc7.0.x/trunk/test/org/apache/catalina/session/TestPersistentManager.java
Mon Jul 7 13:06:53 2014
@@ -129,7 +129,7 @@ public class TestPersistentManager exten
private static class DummyStore implements Store {
private Manager manager;
- private List<String> savedIds = new ArrayList<>();
+ private List<String> savedIds = new ArrayList<String>();
List<String> getSavedIds() {
return savedIds;
@@ -183,5 +183,9 @@ public class TestPersistentManager exten
savedIds.add(session.getId());
}
+ @Override
+ public String getInfo() {
+ return null;
+ }
}
}
\ No newline at end of file
Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1608448&r1=1608447&r2=1608448&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Mon Jul 7 13:06:53 2014
@@ -141,6 +141,10 @@
<code>HttpServletRequest.getPathTranslated()</code> returns a value
that
is based on the modified PathInfo. (markt)
</fix>
+ <fix>
+ <bug>56698</bug>: When persisting idle sessions, only persist newly
idle
+ sessions. Patch provided by Felix Schumacher. (markt)
+ </fix>
</changelog>
</subsection>
<subsection name="Coyote">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]