From a0c1781c4e909d35030d9762eaa70cf37639a569 Mon Sep 17 00:00:00 2001 From: Dejan Bosanac Date: Mon, 2 Sep 2013 16:19:03 +0200 Subject: [PATCH] https://issues.apache.org/jira/browse/AMQ-4711 - totalMessageCount stat is not decremented after destination removal --- .../management/CountStatisticImpl.java | 3 +++ .../apache/activemq/broker/jmx/MBeanTest.java | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/activemq-client/src/main/java/org/apache/activemq/management/CountStatisticImpl.java b/activemq-client/src/main/java/org/apache/activemq/management/CountStatisticImpl.java index b88ba1c3b2..bd5cd419a9 100755 --- a/activemq-client/src/main/java/org/apache/activemq/management/CountStatisticImpl.java +++ b/activemq-client/src/main/java/org/apache/activemq/management/CountStatisticImpl.java @@ -105,6 +105,9 @@ public class CountStatisticImpl extends StatisticImpl implements CountStatistic } public void setParent(CountStatisticImpl parent) { + if (this.parent != null) { + this.parent.subtract(this.getCount()); + } this.parent = parent; } diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/broker/jmx/MBeanTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/broker/jmx/MBeanTest.java index 2e3ae2c00f..1327dd2116 100644 --- a/activemq-unit-tests/src/test/java/org/apache/activemq/broker/jmx/MBeanTest.java +++ b/activemq-unit-tests/src/test/java/org/apache/activemq/broker/jmx/MBeanTest.java @@ -189,6 +189,26 @@ public class MBeanTest extends EmbeddedBrokerTestSupport { } + public void testRemoveQueue() throws Exception { + String queueName = "TEST"; + ObjectName brokerName = assertRegisteredObjectName(domain + ":type=Broker,brokerName=localhost"); + BrokerViewMBean broker = MBeanServerInvocationHandler.newProxyInstance(mbeanServer, brokerName, BrokerViewMBean.class, true); + broker.addQueue(queueName); + + ObjectName queueViewMBeanName = assertRegisteredObjectName(domain + ":type=Broker,brokerName=localhost,destinationType=Queue,destinationName=" + queueName); + + QueueViewMBean queue = MBeanServerInvocationHandler.newProxyInstance(mbeanServer, queueViewMBeanName, QueueViewMBean.class, true); + queue.sendTextMessage("message 1"); + queue.sendTextMessage("message 2"); + + assertEquals(2, broker.getTotalMessageCount()); + + broker.removeQueue(queueName); + + assertEquals(0, broker.getTotalMessageCount()); + + } + public void testRetryMessages() throws Exception { // lets speed up redelivery ActiveMQConnectionFactory factory = (ActiveMQConnectionFactory) connectionFactory;