From d942858418286c716b0dac33b888a3f4b994ea41 Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Wed, 5 Nov 2014 10:33:59 +0000 Subject: QPID-6213: only restart timer once all queues have been purged git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1636848 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/src/qpid/broker/QueueCleaner.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'qpid/cpp/src') diff --git a/qpid/cpp/src/qpid/broker/QueueCleaner.cpp b/qpid/cpp/src/qpid/broker/QueueCleaner.cpp index 8ae733a1ff..b252c1e8be 100644 --- a/qpid/cpp/src/qpid/broker/QueueCleaner.cpp +++ b/qpid/cpp/src/qpid/broker/QueueCleaner.cpp @@ -74,6 +74,7 @@ void QueueCleaner::setTimer(qpid::sys::Timer* timer) { void QueueCleaner::fired() { queues.eachQueue(boost::bind(&PurgeSet::push, &purging, _1)); + QPID_LOG(debug, "Requested purge of queues"); } QueueCleaner::QueuePtrs::const_iterator QueueCleaner::purge(const QueueCleaner::QueuePtrs& batch) @@ -81,8 +82,12 @@ QueueCleaner::QueuePtrs::const_iterator QueueCleaner::purge(const QueueCleaner:: for (QueuePtrs::const_iterator i = batch.begin(); i != batch.end(); ++i) { (*i)->purgeExpired(period); } - task->restart(); - timer->add(task); + QPID_LOG(debug, "Purged " << batch.size() << " queues"); + if (purging.empty()) { + task->restart(); + timer->add(task); + QPID_LOG(debug, "Restarted purge timer"); + } return batch.end(); } -- cgit v1.2.1