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

remm 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 f8bb3601e6 Deprecate sessionCounter and duplicates statistics
f8bb3601e6 is described below

commit f8bb3601e610d7c0f5d7c108099f8cb9265224f6
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 a0e0d716a4..68bb0195d7 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;
 
     /**
@@ -695,7 +703,6 @@ public abstract class ManagerBase extends 
LifecycleMBeanBase implements Manager
             id = generateSessionId();
         }
         session.setId(id);
-        sessionCounter++;
 
         SessionTiming timing = new SessionTiming(session.getCreationTime(), 0);
         synchronized (sessionCreationTiming) {
@@ -848,22 +855,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();
     }
 
 
@@ -908,7 +900,7 @@ public abstract class ManagerBase extends 
LifecycleMBeanBase implements Manager
 
     @Override
     public long getSessionCounter() {
-        return sessionCounter;
+        return getActiveSessions() + getExpiredSessions();
     }
 
 
@@ -916,12 +908,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 d35e62290c..d98ecd57e7 100644
--- a/java/org/apache/catalina/session/StandardManager.java
+++ b/java/org/apache/catalina/session/StandardManager.java
@@ -155,7 +155,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 b28c567093..0fca74c056 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 11.0.0-M20 (markt)" 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