Otherwise these generate leak detection noise.
Signed-off-by: Sage Weil <sage@redhat.com>
dispatch_thread.join();
}
+void DispatchQueue::discard_local()
+{
+ for (list<pair<Message *, int> >::iterator p = local_messages.begin();
+ p != local_messages.end();
+ ++p) {
+ ldout(cct,20) << __func__ << " " << p->first << dendl;
+ p->first->put();
+ }
+ local_messages.clear();
+}
+
void DispatchQueue::shutdown()
{
// stop my local delivery thread
void fast_preprocess(Message *m);
void enqueue(Message *m, int priority, uint64_t id);
void discard_queue(uint64_t id);
+ void discard_local();
uint64_t get_id() {
Mutex::Locker l(lock);
return next_pipe_id++;
}
lock.Unlock();
- if(dispatch_queue.is_started()) {
+ if (dispatch_queue.is_started()) {
ldout(cct,10) << "wait: waiting for dispatch queue" << dendl;
dispatch_queue.wait();
+ dispatch_queue.discard_local();
ldout(cct,10) << "wait: dispatch queue is stopped" << dendl;
}