From 5a27904d1d3279667254f4c51cd52489d29e2bc4 Mon Sep 17 00:00:00 2001 From: Robert Davies Date: Thu, 1 May 2008 06:36:20 +0000 Subject: [PATCH] Fix for https://issues.apache.org/activemq/browse/AMQ-1705 git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@652438 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/activemq/broker/region/AbstractRegion.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/activemq-core/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java b/activemq-core/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java index 733ff98da0..b1c595c4a0 100755 --- a/activemq-core/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java +++ b/activemq-core/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java @@ -262,13 +262,18 @@ public abstract class AbstractRegion implements Region { // so everything after this point would be leaked. // Add the subscription to all the matching queues. - + // But copy the matches first - to prevent deadlocks + ListaddList = new ArrayList(); synchronized(destinationsMutex) { for (Iterator iter = destinationMap.get(info.getDestination()).iterator(); iter.hasNext();) { Destination dest = (Destination)iter.next(); - dest.addSubscription(context, sub); + addList.add(dest); } } + + for (Destination dest:addList) { + dest.addSubscription(context, sub); + } if (info.isBrowser()) { ((QueueBrowserSubscription)sub).destinationsAdded();