From: Sage Weil Date: Wed, 29 May 2013 19:24:28 +0000 (-0700) Subject: osd: remove down hb peers X-Git-Tag: v0.65~192^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=28ea184d3a37fa8d878c82571ae64607c6717b43;p=ceph.git osd: remove down hb peers If a (say, random) peer goes down, filter it out. Signed-off-by: Sage Weil --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index c8a5b9a263e6..0e65172723cf 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -2350,13 +2350,19 @@ void OSD::maybe_update_heartbeat_peers() _add_heartbeat_peer(*p); } - // identify extras - for (map::iterator p = heartbeat_peers.begin(); - p != heartbeat_peers.end(); - ++p) { + // remove down peers; enumerate extras + map::iterator p = heartbeat_peers.begin(); + while (p != heartbeat_peers.end()) { + if (!osdmap->is_up(p->first)) { + int o = p->first; + ++p; + _remove_heartbeat_peer(o); + continue; + } if (p->second.epoch < osdmap->get_epoch()) { extras.insert(p->first); } + ++p; } // too few?