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

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

commit 51ea1a9daa2463d7915dd218d3ce968f3008744e
Author: opencode <[email protected]>
AuthorDate: Wed Sep 30 23:08:55 2026 +0200

    Snapshot the request counter in ReplicationValve.updateStats() and guard 
against zero so that a concurrent resetStatistics() cannot cause a division by 
zero
---
 java/org/apache/catalina/ha/tcp/ReplicationValve.java | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/java/org/apache/catalina/ha/tcp/ReplicationValve.java 
b/java/org/apache/catalina/ha/tcp/ReplicationValve.java
index 45fe311b46..ffcb5928d8 100644
--- a/java/org/apache/catalina/ha/tcp/ReplicationValve.java
+++ b/java/org/apache/catalina/ha/tcp/ReplicationValve.java
@@ -584,11 +584,14 @@ public class ReplicationValve extends ValveBase 
implements ClusterValve {
         if (!isAsync) {
             nrOfRequests.increment();
             if (log.isDebugEnabled()) {
-                if ((nrOfRequests.longValue() % 100) == 0) {
+                // Snapshot the counter to avoid a division by zero if
+                // resetStatistics() runs concurrently (JMX operation)
+                long requests = nrOfRequests.longValue();
+                if (requests > 0 && (requests % 100) == 0) {
                     log.debug(sm.getString("ReplicationValve.stats",
-                            Long.valueOf(totalRequestTime.longValue() / 
nrOfRequests.longValue()),
-                            Long.valueOf(totalSendTime.longValue() / 
nrOfRequests.longValue()),
-                            Long.valueOf(nrOfRequests.longValue()), 
Long.valueOf(nrOfSendRequests.longValue()),
+                            Long.valueOf(totalRequestTime.longValue() / 
requests),
+                            Long.valueOf(totalSendTime.longValue() / requests),
+                            Long.valueOf(requests), 
Long.valueOf(nrOfSendRequests.longValue()),
                             
Long.valueOf(nrOfCrossContextSendRequests.longValue()),
                             Long.valueOf(nrOfFilterRequests.longValue()), 
Long.valueOf(totalRequestTime.longValue()),
                             Long.valueOf(totalSendTime.longValue())));


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

Reply via email to