diff options
Diffstat (limited to 'cpp/src/qpid/ha/QueueGuard.cpp')
| -rw-r--r-- | cpp/src/qpid/ha/QueueGuard.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/cpp/src/qpid/ha/QueueGuard.cpp b/cpp/src/qpid/ha/QueueGuard.cpp index 93694af671..b391a5257b 100644 --- a/cpp/src/qpid/ha/QueueGuard.cpp +++ b/cpp/src/qpid/ha/QueueGuard.cpp @@ -51,13 +51,15 @@ class QueueGuard::QueueObserver : public broker::QueueObserver QueueGuard::QueueGuard(broker::Queue& q, const BrokerInfo& info) : queue(q), subscription(0) { + // NOTE: There is no activity on the queue while QueueGuard constructor is + // running It is called either from Primary before client connections are + // allowed or from ConfigurationObserver::queueCreate before the queue is + // visible. std::ostringstream os; os << "Primary guard " << queue.getName() << "@" << info.getLogId() << ": "; logPrefix = os.str(); observer.reset(new QueueObserver(*this)); - // Once we call addObserver we can get calls to enqueued and dequeued queue.addObserver(observer); - // Must set after addObserver so we don't miss any enqueues. firstSafe = queue.getPosition(); // FIXME aconway 2012-06-13: fencepost error } @@ -95,6 +97,7 @@ void QueueGuard::cancel() { Mutex::ScopedLock l(lock); if (delayed.empty()) return; // No need if no delayed messages. } + // FIXME aconway 2012-06-15: optimize, only messages in delayed set. queue.eachMessage(boost::bind(&QueueGuard::complete, this, _1)); } |
