diff options
author | Rajith Muditha Attapattu <rajith@apache.org> | 2012-01-31 16:41:48 +0000 |
---|---|---|
committer | Rajith Muditha Attapattu <rajith@apache.org> | 2012-01-31 16:41:48 +0000 |
commit | ccc58115dbb83eb6605b1b36a7363fa38c1713f1 (patch) | |
tree | e28add0ce376083f55f24be66288400802ac93fa | |
parent | 76b0cc37d272c6b50c5fc055fbcbaf8c1dc31400 (diff) | |
download | qpid-python-ccc58115dbb83eb6605b1b36a7363fa38c1713f1.tar.gz |
QPID-3604 Moved the draining of consumer queues further down to be done
after we drain the dispatch queue. Since the message flow is now stopped
we can drain the queues without grabbing the message-delivery-lock.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1238688 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java index cfd5776c0a..d38f4bbb2f 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java +++ b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java @@ -1366,18 +1366,16 @@ public class AMQSession_0_10 extends AMQSession<BasicMessageConsumer_0_10, Basic void stop() throws AMQException { super.stop(); - synchronized (getMessageDeliveryLock()) - { - for (BasicMessageConsumer consumer : getConsumers().values()) - { - List<Long> tags = consumer.drainReceiverQueueAndRetrieveDeliveryTags(); - getPrefetchedMessageTags().addAll(tags); - } - } setUsingDispatcherForCleanup(true); drainDispatchQueue(); setUsingDispatcherForCleanup(false); + for (BasicMessageConsumer consumer : getConsumers().values()) + { + List<Long> tags = consumer.drainReceiverQueueAndRetrieveDeliveryTags(); + getPrefetchedMessageTags().addAll(tags); + } + RangeSet delivered = gatherRangeSet(getUnacknowledgedMessageTags()); RangeSet prefetched = gatherRangeSet(getPrefetchedMessageTags()); RangeSet all = RangeSetFactory.createRangeSet(delivered.size() |