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

remm pushed a commit to branch 10.1.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/10.1.x by this push:
     new 0eafa69cb7 Deprecate sessionCounter and duplicates statistics
0eafa69cb7 is described below

commit 0eafa69cb752ccbafb421f1e6e3f23f8b87a1d57
Author: remm <r...@apache.org>
AuthorDate: Thu Apr 11 16:47:23 2024 +0200

    Deprecate sessionCounter and duplicates statistics
    
    Will be removed in Tomcat 11.
    Replaced with: sessionCounter = activeSessions + expiredSessions.
    Related to PR713 since tracking this statistic does not seem that
    worthwhile.
    Duplicates is removed since it is supposed to track collisions from the
    id generator. If feedback is that this is useful, will be replaced by a
    scary log instead when a collision occurs.
---
 java/org/apache/catalina/Manager.java              |  6 +++-
 .../apache/catalina/ha/session/DeltaManager.java   |  6 +---
 java/org/apache/catalina/session/ManagerBase.java  | 40 +++++++++++-----------
 .../apache/catalina/session/StandardManager.java   |  1 -
 webapps/docs/changelog.xml                         | 11 ++++++
 5 files changed, 37 insertions(+), 27 deletions(-)

diff --git a/java/org/apache/catalina/Manager.java 
b/java/org/apache/catalina/Manager.java
index 41e3211945..b8438b1150 100644
--- a/java/org/apache/catalina/Manager.java
+++ b/java/org/apache/catalina/Manager.java
@@ -76,7 +76,9 @@ public interface Manager {
 
 
     /**
-     * Returns the total number of sessions created by this manager.
+     * Returns the total number of sessions created by this manager, which is
+     * approximated as the number of active sessions plus the number of
+     * expired sessions.
      *
      * @return Total number of sessions created by this manager.
      */
@@ -87,7 +89,9 @@ public interface Manager {
      * Sets the total number of sessions created by this manager.
      *
      * @param sessionCounter Total number of sessions created by this manager.
+     * @deprecated This will be removed in Tomcat 11
      */
+    @Deprecated
     void setSessionCounter(long sessionCounter);
 
 
diff --git a/java/org/apache/catalina/ha/session/DeltaManager.java 
b/java/org/apache/catalina/ha/session/DeltaManager.java
index 2bb7439986..3fd0b961e0 100644
--- a/java/org/apache/catalina/ha/session/DeltaManager.java
+++ b/java/org/apache/catalina/ha/session/DeltaManager.java
@@ -572,10 +572,7 @@ public class DeltaManager extends ClusterManagerBase {
                 session.setAccessCount(0);
                 session.resetDeltaRequest();
                 // FIXME How inform other session id cache like SingleSignOn
-                // increment sessionCounter to correct stats report
-                if (findSession(session.getIdInternal()) == null) {
-                    sessionCounter++;
-                } else {
+                if (findSession(session.getIdInternal()) != null) {
                     sessionReplaceCounter++;
                     // FIXME better is to grap this sessions again !
                     if (log.isWarnEnabled()) {
@@ -979,7 +976,6 @@ public class DeltaManager extends ClusterManagerBase {
         sessionReplaceCounter = 0;
         counterNoStateTransferred = 0;
         setMaxActive(getActiveSessions());
-        sessionCounter = getActiveSessions();
         counterReceive_EVT_ALL_SESSION_DATA = 0;
         counterReceive_EVT_GET_ALL_SESSIONS = 0;
         counterReceive_EVT_SESSION_ACCESSED = 0;
diff --git a/java/org/apache/catalina/session/ManagerBase.java 
b/java/org/apache/catalina/session/ManagerBase.java
index 405f6762cd..794972045b 100644
--- a/java/org/apache/catalina/session/ManagerBase.java
+++ b/java/org/apache/catalina/session/ManagerBase.java
@@ -127,7 +127,11 @@ public abstract class ManagerBase extends 
LifecycleMBeanBase implements Manager
      */
     protected Map<String,Session> sessions = new ConcurrentHashMap<>();
 
-    // Number of sessions created by this manager
+    /**
+     * Number of sessions created by this manager.
+     * @deprecated This will be removed in Tomcat 11
+     */
+    @Deprecated
     protected long sessionCounter = 0;
 
     protected volatile int maxActive = 0;
@@ -144,7 +148,11 @@ public abstract class ManagerBase extends 
LifecycleMBeanBase implements Manager
      */
     protected int rejectedSessions = 0;
 
-    // number of duplicated session ids - anything >0 means we have problems
+    /**
+     * Number of duplicated session ids, anything > 0 means we have problems.
+     * @deprecated This will be removed in Tomcat 11
+     */
+    @Deprecated
     protected volatile int duplicates = 0;
 
     /**
@@ -710,7 +718,6 @@ public abstract class ManagerBase extends 
LifecycleMBeanBase implements Manager
             id = generateSessionId();
         }
         session.setId(id);
-        sessionCounter++;
 
         SessionTiming timing = new SessionTiming(session.getCreationTime(), 0);
         synchronized (sessionCreationTiming) {
@@ -863,22 +870,7 @@ public abstract class ManagerBase extends 
LifecycleMBeanBase implements Manager
      * @return a new session id
      */
     protected String generateSessionId() {
-
-        String result = null;
-
-        do {
-            if (result != null) {
-                // Not thread-safe but if one of multiple increments is lost
-                // that is not a big deal since the fact that there was any
-                // duplicate is a much bigger issue.
-                duplicates++;
-            }
-
-            result = sessionIdGenerator.generateSessionId();
-
-        } while (sessions.containsKey(result));
-
-        return result;
+        return sessionIdGenerator.generateSessionId();
     }
 
 
@@ -923,7 +915,7 @@ public abstract class ManagerBase extends 
LifecycleMBeanBase implements Manager
 
     @Override
     public long getSessionCounter() {
-        return sessionCounter;
+        return getActiveSessions() + getExpiredSessions();
     }
 
 
@@ -931,12 +923,20 @@ public abstract class ManagerBase extends 
LifecycleMBeanBase implements Manager
      * Number of duplicated session IDs generated by the random source. 
Anything bigger than 0 means problems.
      *
      * @return The count of duplicates
+     * @deprecated This will be removed in Tomcat 11
      */
+    @Deprecated
     public int getDuplicates() {
         return duplicates;
     }
 
 
+    /**
+     * Set duplicates count.
+     * @param duplicates the new duplicates count
+     * @deprecated This will be removed in Tomcat 11
+     */
+    @Deprecated
     public void setDuplicates(int duplicates) {
         this.duplicates = duplicates;
     }
diff --git a/java/org/apache/catalina/session/StandardManager.java 
b/java/org/apache/catalina/session/StandardManager.java
index 629c13ed89..465c122b9b 100644
--- a/java/org/apache/catalina/session/StandardManager.java
+++ b/java/org/apache/catalina/session/StandardManager.java
@@ -217,7 +217,6 @@ public class StandardManager extends ManagerBase {
                             session.setValid(true);
                             session.expire();
                         }
-                        sessionCounter++;
                     }
                 } finally {
                     // Delete the persistent storage file
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index efef5c49bd..143aea6a92 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -105,6 +105,17 @@
   issues do not "pop up" wrt. others).
 -->
 <section name="Tomcat 10.1.23 (schultz)" rtext="in development">
+  <subsection name="Catalina">
+    <changelog>
+      <update>
+        Deprecate and remove <code>sessionCounter</code> (replaced by the
+        addition of the active session count and the expired session count,
+        as a reasonable approximation) and <code>duplicates</code> (which
+        does not represent a possible event in current implementations)
+        statistics from the session manager. (remm)
+      </update>
+    </changelog>
+  </subsection>
   <subsection name="Coyote">
     <changelog>
       <fix>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to