From: Sage Weil Date: Wed, 17 Jul 2013 05:43:26 +0000 (-0700) Subject: msgr: generate reset event on mark_down to addr (not con) X-Git-Tag: v0.67-rc1~16^2~18 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8dcf0b199af36f0f3b3fb81103949050d53750e4;p=ceph.git msgr: generate reset event on mark_down to addr (not con) If the caller is marking down an addr, they presumably don't have the Connection* handy, so we should generate a reset event to help them clean up con <-> session ref cycles. Signed-off-by: Sage Weil --- diff --git a/src/msg/SimpleMessenger.cc b/src/msg/SimpleMessenger.cc index afee0952630e..441ed432af00 100644 --- a/src/msg/SimpleMessenger.cc +++ b/src/msg/SimpleMessenger.cc @@ -599,9 +599,12 @@ void SimpleMessenger::mark_down(const entity_addr_t& addr) p->pipe_lock.Lock(); p->stop(); if (p->connection_state) { - // do not generate a reset event for the caller in this case, - // since they asked for it. - p->connection_state->clear_pipe(p); + // generate a reset event for the caller in this case, even + // though they asked for it, since this is the addr-based (and + // not Connection* based) interface + ConnectionRef con = p->connection_state; + if (con && con->clear_pipe(p)) + dispatch_queue.queue_reset(con.get()); } p->pipe_lock.Unlock(); } else {