]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: remove down hb peers
authorSage Weil <sage@inktank.com>
Wed, 29 May 2013 19:24:28 +0000 (12:24 -0700)
committerSage Weil <sage@inktank.com>
Thu, 30 May 2013 05:43:49 +0000 (22:43 -0700)
If a (say, random) peer goes down, filter it out.

Signed-off-by: Sage Weil <sage@inktank.com>
src/osd/OSD.cc

index c8a5b9a263e6b49166921656b0019e2374f464ac..0e65172723cf02e642970e1318879b8aeb31fb58 100644 (file)
@@ -2350,13 +2350,19 @@ void OSD::maybe_update_heartbeat_peers()
     _add_heartbeat_peer(*p);
   }
 
-  // identify extras
-  for (map<int,HeartbeatInfo>::iterator p = heartbeat_peers.begin();
-       p != heartbeat_peers.end();
-       ++p) {
+  // remove down peers; enumerate extras
+  map<int,HeartbeatInfo>::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?