From 86d450777afc4be4eb512c247e86d1274cbcbe0b Mon Sep 17 00:00:00 2001 From: Matt Pavlovich Date: Tue, 4 Aug 2026 07:21:29 -0500 Subject: [PATCH] [#2436] Fix SizeStatisticImpl.addSize on isEnabled like CountStatisticImpl --- .../management/SizeStatisticImpl.java | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/activemq-client/src/main/java/org/apache/activemq/management/SizeStatisticImpl.java b/activemq-client/src/main/java/org/apache/activemq/management/SizeStatisticImpl.java index 36810833175..6a35740c0f8 100644 --- a/activemq-client/src/main/java/org/apache/activemq/management/SizeStatisticImpl.java +++ b/activemq-client/src/main/java/org/apache/activemq/management/SizeStatisticImpl.java @@ -52,18 +52,26 @@ public synchronized long getCount() { return count; } - public synchronized void addSize(long size) { - count++; - totalSize += size; - if (size > maxSize) { - maxSize = size; + public void addSize(long size) { + // Same enabled gate as CountStatisticImpl.increment(): skip the monitor + // (and parent propagation) entirely when statistics are disabled — + // enabled is a volatile read, so the disabled fast path is contention-free. + if (!isEnabled()) { + return; } - if (size < minSize || minSize == 0) { - minSize = size; - } - updateSampleTime(); - if (parent != null) { - parent.addSize(size); + synchronized (this) { + count++; + totalSize += size; + if (size > maxSize) { + maxSize = size; + } + if (size < minSize || minSize == 0) { + minSize = size; + } + updateSampleTime(); + if (parent != null) { + parent.addSize(size); + } } }