From 86be2975f806463edef4b03b6d4ba229e399e41d Mon Sep 17 00:00:00 2001 From: sageweil Date: Tue, 30 Jan 2007 20:11:23 +0000 Subject: [PATCH] silently ignore messages for entities that have shut themselves down git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@1052 29311d96-e01e-0410-9327-a35deaab8ce9 --- branches/sage/cephmds2/msg/SimpleMessenger.cc | 19 +++++++++++++------ branches/sage/cephmds2/msg/SimpleMessenger.h | 1 + 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/branches/sage/cephmds2/msg/SimpleMessenger.cc b/branches/sage/cephmds2/msg/SimpleMessenger.cc index f6377e828c77d..4b3e3944abe18 100644 --- a/branches/sage/cephmds2/msg/SimpleMessenger.cc +++ b/branches/sage/cephmds2/msg/SimpleMessenger.cc @@ -335,8 +335,12 @@ void Rank::Pipe::reader() } else { entity = rank.find_unnamed(m->get_dest()); if (!entity) { - derr(0) << "pipe(" << peer_inst << ' ' << this << ").reader got message " << *m << " for " << m->get_dest() << ", which isn't local" << endl; - assert(0); // FIXME do this differently + if (rank.stopped.count(m->get_dest())) { + // ignore it + } else { + derr(0) << "pipe(" << peer_inst << ' ' << this << ").reader got message " << *m << " for " << m->get_dest() << ", which isn't local" << endl; + assert(0); // FIXME do this differently + } } } } @@ -858,10 +862,13 @@ void Rank::unregister_entity(EntityMessenger *msgr) dout(10) << "unregister_entity " << msgr->get_myaddr() << endl; // remove from local directory. - assert(local.count(msgr->get_myaddr())); - local.erase(msgr->get_myaddr()); - assert(entity_map.count(msgr->get_myaddr())); - entity_map.erase(msgr->get_myaddr()); + msg_addr_t addr = msgr->get_myaddr(); + assert(local.count(addr)); + local.erase(addr); + assert(entity_map.count(addr)); + entity_map.erase(addr); + + stopped.insert(addr); wait_cond.Signal(); diff --git a/branches/sage/cephmds2/msg/SimpleMessenger.h b/branches/sage/cephmds2/msg/SimpleMessenger.h index 070fb236b08fd..dc8ced35b087a 100644 --- a/branches/sage/cephmds2/msg/SimpleMessenger.h +++ b/branches/sage/cephmds2/msg/SimpleMessenger.h @@ -245,6 +245,7 @@ class Rank { // local map local; + set stopped; // remote hash_map<__int64_t, Pipe*> rank_pipe; -- 2.39.5