diff options
Diffstat (limited to 'cpp/src/qpid/broker/PersistableMessage.cpp')
-rw-r--r-- | cpp/src/qpid/broker/PersistableMessage.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/cpp/src/qpid/broker/PersistableMessage.cpp b/cpp/src/qpid/broker/PersistableMessage.cpp index b67a669f1d..920dfd6386 100644 --- a/cpp/src/qpid/broker/PersistableMessage.cpp +++ b/cpp/src/qpid/broker/PersistableMessage.cpp @@ -87,6 +87,7 @@ void PersistableMessage::enqueueComplete() { } } if (notify) { + allEnqueuesComplete(); sys::ScopedLock<sys::Mutex> l(storeLock); if (store) { for (syncList::iterator i = synclist.begin(); i != synclist.end(); ++i) { @@ -118,13 +119,17 @@ bool PersistableMessage::isDequeueComplete() { } void PersistableMessage::dequeueComplete() { - - sys::ScopedLock<sys::Monitor> l(asyncDequeueLock); - if (asyncDequeueCounter > 0) { - if (--asyncDequeueCounter == 0) { - asyncDequeueLock.notify(); + bool notify = false; + { + sys::ScopedLock<sys::Monitor> l(asyncDequeueLock); + if (asyncDequeueCounter > 0) { + if (--asyncDequeueCounter == 0) { + notify = true; + asyncDequeueLock.notify(); + } } } + if (notify) allDequeuesComplete(); } void PersistableMessage::waitForDequeueComplete() { |