From: Sage Weil Date: Tue, 15 Sep 2015 16:46:25 +0000 (-0400) Subject: msg/simple: discard local queued messages on shutdown X-Git-Tag: v9.1.0~135^2~1^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=03b8ed3b6c503d71049e42544fa7e5c71e68c98d;p=ceph.git msg/simple: discard local queued messages on shutdown Otherwise these generate leak detection noise. Signed-off-by: Sage Weil --- diff --git a/src/msg/simple/DispatchQueue.cc b/src/msg/simple/DispatchQueue.cc index c47ee72b81848..500239f29ab1b 100644 --- a/src/msg/simple/DispatchQueue.cc +++ b/src/msg/simple/DispatchQueue.cc @@ -227,6 +227,17 @@ void DispatchQueue::wait() dispatch_thread.join(); } +void DispatchQueue::discard_local() +{ + for (list >::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 diff --git a/src/msg/simple/DispatchQueue.h b/src/msg/simple/DispatchQueue.h index 606b850240792..d379f55881cf7 100644 --- a/src/msg/simple/DispatchQueue.h +++ b/src/msg/simple/DispatchQueue.h @@ -180,6 +180,7 @@ class DispatchQueue { 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++; diff --git a/src/msg/simple/SimpleMessenger.cc b/src/msg/simple/SimpleMessenger.cc index fc4b48b213c95..fdb7278292d48 100644 --- a/src/msg/simple/SimpleMessenger.cc +++ b/src/msg/simple/SimpleMessenger.cc @@ -534,9 +534,10 @@ void SimpleMessenger::wait() } 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; }