From 2a07b408ee6f1bf63d06e4dc8da04f02fa25a4e7 Mon Sep 17 00:00:00 2001 From: Gary Tully Date: Thu, 12 Nov 2009 10:48:39 +0000 Subject: [PATCH] svn merge -c 835325 https://svn.apache.org/repos/asf/activemq/trunk - resolve https://issues.apache.org/activemq/browse/AMQ-2487, patch applied, test added git-svn-id: https://svn.apache.org/repos/asf/activemq/branches/activemq-5.3@835329 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/activemq/broker/region/RegionBroker.java | 6 +++++- .../org/apache/activemq/broker/MessageExpirationTest.java | 2 +- .../org/apache/activemq/usecases/ExpiredMessagesTest.java | 4 ++++ 3 files changed, 10 insertions(+), 2 deletions(-) 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;