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: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to