diff --git a/activemq-core/src/main/java/org/apache/activemq/broker/region/RegionBroker.java b/activemq-core/src/main/java/org/apache/activemq/broker/region/RegionBroker.java index 1eeabffef1..7e42328b19 100755 --- a/activemq-core/src/main/java/org/apache/activemq/broker/region/RegionBroker.java +++ b/activemq-core/src/main/java/org/apache/activemq/broker/region/RegionBroker.java @@ -723,7 +723,11 @@ public class RegionBroker extends EmptyBroker { .getDestination()); if (context.getBroker()==null) { context.setBroker(getRoot()); - } + } + + // Clear out the memory usage for the old queue. + // We'll reset it to the DLQ below: + message.setMemoryUsage(null); BrokerSupport.resendNoCopy(context,message, deadLetterDestination); } diff --git a/activemq-core/src/test/java/org/apache/activemq/broker/MessageExpirationTest.java b/activemq-core/src/test/java/org/apache/activemq/broker/MessageExpirationTest.java index 23f7424c76..8015f3889e 100644 --- a/activemq-core/src/test/java/org/apache/activemq/broker/MessageExpirationTest.java +++ b/activemq-core/src/test/java/org/apache/activemq/broker/MessageExpirationTest.java @@ -19,8 +19,8 @@ package org.apache.activemq.broker; import javax.jms.DeliveryMode; import junit.framework.Test; + import org.apache.activemq.broker.region.policy.PolicyEntry; -import org.apache.activemq.broker.region.policy.PolicyMap; import org.apache.activemq.broker.region.policy.VMPendingSubscriberMessageStoragePolicy; import org.apache.activemq.command.ActiveMQDestination; import org.apache.activemq.command.ConnectionInfo; diff --git a/activemq-core/src/test/java/org/apache/activemq/usecases/ExpiredMessagesTest.java b/activemq-core/src/test/java/org/apache/activemq/usecases/ExpiredMessagesTest.java index ffdec58615..cbd0bb118b 100644 --- a/activemq-core/src/test/java/org/apache/activemq/usecases/ExpiredMessagesTest.java +++ b/activemq-core/src/test/java/org/apache/activemq/usecases/ExpiredMessagesTest.java @@ -172,6 +172,10 @@ public class ExpiredMessagesTest extends CombinationTestSupport { }); assertEquals("dlq contains all expired", totalExpiredCount, dlqView.getQueueSize()); + // memory check + assertEquals("memory usage is back to duck egg", 0, view.getMemoryPercentUsage()); + assertTrue("memory usage is increased ", 0 < dlqView.getMemoryPercentUsage()); + // verify DQL MessageConsumer dlqConsumer = createDlqConsumer(connection); int count = 0;