From c0499c83b0ed20c78221064f30781a910c12c9f8 Mon Sep 17 00:00:00 2001 From: Robert Davies Date: Tue, 26 Jan 2010 18:21:25 +0000 Subject: [PATCH] Fix for http://issues.apache.org/activemq/browse/AMQ-2530 git-svn-id: https://svn.apache.org/repos/asf/activemq/branches/activemq-5.3@903349 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/activemq/network/ConduitBridge.java | 4 +++- .../usecases/ThreeBrokerQueueNetworkTest.java | 12 +++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/activemq-core/src/main/java/org/apache/activemq/network/ConduitBridge.java b/activemq-core/src/main/java/org/apache/activemq/network/ConduitBridge.java index 63c4af08ca..4699198197 100644 --- a/activemq-core/src/main/java/org/apache/activemq/network/ConduitBridge.java +++ b/activemq-core/src/main/java/org/apache/activemq/network/ConduitBridge.java @@ -21,7 +21,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; - import org.apache.activemq.command.BrokerId; import org.apache.activemq.command.ConsumerId; import org.apache.activemq.command.ConsumerInfo; @@ -48,6 +47,7 @@ public class ConduitBridge extends DemandForwardingBridge { super(configuration, localBroker, remoteBroker); } + @Override protected DemandSubscription createDemandSubscription(ConsumerInfo info) throws IOException { if (addToAlreadyInterestedConsumers(info)) { return null; // don't want this subscription added @@ -94,7 +94,9 @@ public class ConduitBridge extends DemandForwardingBridge { return matched; } + @Override protected void removeDemandSubscription(ConsumerId id) throws IOException { + super.removeDemandSubscription(id); List tmpList = new ArrayList(); for (Iterator i = subscriptionMapByLocalId.values().iterator(); i.hasNext();) { diff --git a/activemq-core/src/test/java/org/apache/activemq/usecases/ThreeBrokerQueueNetworkTest.java b/activemq-core/src/test/java/org/apache/activemq/usecases/ThreeBrokerQueueNetworkTest.java index cc8b649c46..93a914a755 100644 --- a/activemq-core/src/test/java/org/apache/activemq/usecases/ThreeBrokerQueueNetworkTest.java +++ b/activemq-core/src/test/java/org/apache/activemq/usecases/ThreeBrokerQueueNetworkTest.java @@ -23,10 +23,8 @@ import java.util.Iterator; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; - import javax.jms.Destination; import javax.jms.MessageConsumer; - import org.apache.activemq.JmsMultipleBrokersTestSupport; import org.apache.activemq.broker.Broker; import org.apache.activemq.broker.BrokerFilter; @@ -358,7 +356,14 @@ public class ThreeBrokerQueueNetworkTest extends JmsMultipleBrokersTestSupport { assertEquals(messageCount, msgsA.getMessageCount()); } - public void testMigrateConsumerStuckMessages() throws Exception { + /* + * This test is disabled - as it fails with a fix for + * http://issues.apache.org/activemq/browse/AMQ-2530 - which highlights that + * For a Conduit bridge - local subscription Ids weren't removed in a ConduitBridge + * The test fails because on closing clientA - clientB correctly receives all the + * messages - ie. half dont get stuck on BrokerA - + */ + public void XtestMigrateConsumerStuckMessages() throws Exception { boolean suppressQueueDuplicateSubscriptions = false; bridgeAllBrokers("default", 3, suppressQueueDuplicateSubscriptions); startAllBrokers(); @@ -612,6 +617,7 @@ public class ThreeBrokerQueueNetworkTest extends JmsMultipleBrokersTestSupport { } } + @Override public void setUp() throws Exception { super.setAutoFail(true); super.setUp();