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]
