diff options
author | Alan Conway <aconway@apache.org> | 2010-07-05 20:12:08 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2010-07-05 20:12:08 +0000 |
commit | 74f973f9b8aaa0aedc9e7c3b2505357aae8e614a (patch) | |
tree | 8ad8de6773a48aab5121ac4152fb8624758b5087 /cpp/src/qpid/broker/Queue.cpp | |
parent | 3c57e4b18865b717404ea41efbd4b80516a92a33 (diff) | |
download | qpid-python-74f973f9b8aaa0aedc9e7c3b2505357aae8e614a.tar.gz |
Defer delivery of messages in cluster-unsafe context.
Messages enqueued in a cluster-safe context are synchronized across
the cluster. However some messages are delivered in a cluster-unsafe
context, for example raising a link established event occurs the
connection thread of the establishing connection.
This fix deferrs such messages by multicasting them so they can be
re-delived in a cluster safe context.
See https://bugzilla.redhat.com/show_bug.cgi?id=611543
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@960681 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/Queue.cpp')
-rw-r--r-- | cpp/src/qpid/broker/Queue.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/cpp/src/qpid/broker/Queue.cpp b/cpp/src/qpid/broker/Queue.cpp index dd077aa564..40ef6052a0 100644 --- a/cpp/src/qpid/broker/Queue.cpp +++ b/cpp/src/qpid/broker/Queue.cpp @@ -142,6 +142,9 @@ bool Queue::isExcluded(boost::intrusive_ptr<Message>& msg) } void Queue::deliver(boost::intrusive_ptr<Message> msg){ + // Check for deferred delivery in a cluster. + if (broker && broker->deferDelivery(name, msg)) + return; if (msg->isImmediate() && getConsumerCount() == 0) { if (alternateExchange) { DeliverableMessage deliverable(msg); |