This is an automated email from the ASF dual-hosted git repository.

markt-asf pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/main by this push:
     new 67556cb477 Fix potential race during session expiration.
67556cb477 is described below

commit 67556cb4773ede331597b6c75fd8a3ee0afa0d41
Author: Mark Thomas <[email protected]>
AuthorDate: Tue Oct 13 18:35:51 2026 +0100

    Fix potential race during session expiration.
---
 java/org/apache/catalina/session/StoreBase.java | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/java/org/apache/catalina/session/StoreBase.java 
b/java/org/apache/catalina/session/StoreBase.java
index 2be2526770..8bfcb32bc1 100644
--- a/java/org/apache/catalina/session/StoreBase.java
+++ b/java/org/apache/catalina/session/StoreBase.java
@@ -22,6 +22,7 @@ import java.io.BufferedInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.ObjectInputStream;
+import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReadWriteLock;
 
 import org.apache.catalina.LifecycleException;
@@ -156,6 +157,8 @@ public abstract class StoreBase extends LifecycleBase 
implements Store {
         long timeNow = System.currentTimeMillis();
 
         for (String key : keys) {
+            Lock writeLock = getSessionStoreLock(key).writeLock();
+            writeLock.lock();
             try {
                 Session session = load(key);
                 if (session == null) {
@@ -197,6 +200,8 @@ public abstract class StoreBase extends LifecycleBase 
implements Store {
                 } catch (IOException ioe) {
                     
manager.getContext().getLogger().error(sm.getString("store.removeFail", key), 
ioe);
                 }
+            } finally {
+                writeLock.unlock();
             }
         }
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to