diff options
author | Gordon Sim <gsim@apache.org> | 2008-12-01 19:49:23 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2008-12-01 19:49:23 +0000 |
commit | a03d20dd52beb9588bcff3fa0924489372172f18 (patch) | |
tree | 2e8c965ab87bed09a4d55b58df0b0d0f25774a52 /cpp/src/qpid/broker/Queue.cpp | |
parent | 89b492cf4847ac930cd112ca16ae9e2786d4976f (diff) | |
download | qpid-python-a03d20dd52beb9588bcff3fa0924489372172f18.tar.gz |
QPID-1497: Ensure policy count and size reflect transactionality of dequeues
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@722200 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/Queue.cpp')
-rw-r--r-- | cpp/src/qpid/broker/Queue.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/cpp/src/qpid/broker/Queue.cpp b/cpp/src/qpid/broker/Queue.cpp index b090ffef43..163c471286 100644 --- a/cpp/src/qpid/broker/Queue.cpp +++ b/cpp/src/qpid/broker/Queue.cpp @@ -609,7 +609,9 @@ bool Queue::dequeue(TransactionContext* ctxt, const QueuedMessage& msg) if (policy.get() && !policy->isEnqueued(msg)) return false; { Mutex::ScopedLock locker(messageLock); - dequeued(msg); + if (!ctxt) { + dequeued(msg); + } } if (msg.payload->isPersistent() && store && !lastValueQueue) { msg.payload->dequeueAsync(shared_from_this(), store); //increment to async counter -- for message sent to more than one queue @@ -620,6 +622,12 @@ bool Queue::dequeue(TransactionContext* ctxt, const QueuedMessage& msg) return false; } +void Queue::dequeueCommitted(const QueuedMessage& msg) +{ + Mutex::ScopedLock locker(messageLock); + dequeued(msg); +} + /** * Removes a message from the in-memory delivery queue as well * dequeing it from the logical (and persistent if applicable) queue |