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

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


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

commit a41afc8e804835e5c20b37d48e4a339e398fdc1c
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 6ade69155d..ad59ac6a9f 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 5183025868..a3653c74c9 100644
--- a/java/org/apache/catalina/ha/session/DeltaManager.java
+++ b/java/org/apache/catalina/ha/session/DeltaManager.java
@@ -691,10 +691,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()) {
@@ -1098,7 +1095,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 cd144bb524..bd31322f79 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;
 
     /**
@@ -718,7 +726,6 @@ public abstract class ManagerBase extends 
LifecycleMBeanBase implements Manager
             id = generateSessionId();
         }
         session.setId(id);
-        sessionCounter++;
 
         SessionTiming timing = new SessionTiming(session.getCreationTime(), 0);
         synchronized (sessionCreationTiming) {
@@ -877,22 +884,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();
     }
 
 
@@ -937,7 +929,7 @@ public abstract class ManagerBase extends 
LifecycleMBeanBase implements Manager
 
     @Override
     public long getSessionCounter() {
-        return sessionCounter;
+        return getActiveSessions() + getExpiredSessions();
     }
 
 
@@ -945,12 +937,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 aa8da0f33b..4ffa6f3368 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 21aac5e54c..9185af8d95 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 9.0.89 (remm)" 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>
 </section>
 <section name="Tomcat 9.0.88 (remm)" rtext="release in progress">
   <subsection name="Catalina">


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

Reply via email to