]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: only add pg peers if active
authorSage Weil <sage@inktank.com>
Wed, 29 May 2013 19:24:04 +0000 (12:24 -0700)
committerSage Weil <sage@inktank.com>
Thu, 30 May 2013 05:43:49 +0000 (22:43 -0700)
We will soon be in this method for the waiting-for-healthy state.  As
a consequence, we need to remove any down peers.

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

index 505d21be0cf0d89bb58944fce5bdbcab68b6fab7..c8a5b9a263e6b49166921656b0019e2374f464ac 100644 (file)
@@ -2314,23 +2314,25 @@ void OSD::maybe_update_heartbeat_peers()
   heartbeat_epoch = osdmap->get_epoch();
 
   // build heartbeat from set
-  for (hash_map<pg_t, PG*>::iterator i = pg_map.begin();
-       i != pg_map.end();
-       ++i) {
-    PG *pg = i->second;
-    pg->heartbeat_peer_lock.Lock();
-    dout(20) << i->first << " heartbeat_peers " << pg->heartbeat_peers << dendl;
-    for (set<int>::iterator p = pg->heartbeat_peers.begin();
-        p != pg->heartbeat_peers.end();
-        ++p)
-      if (osdmap->is_up(*p))
-       _add_heartbeat_peer(*p);
-    for (set<int>::iterator p = pg->probe_targets.begin();
-        p != pg->probe_targets.end();
-        ++p)
-      if (osdmap->is_up(*p))
-       _add_heartbeat_peer(*p);
-    pg->heartbeat_peer_lock.Unlock();
+  if (is_active()) {
+    for (hash_map<pg_t, PG*>::iterator i = pg_map.begin();
+        i != pg_map.end();
+        ++i) {
+      PG *pg = i->second;
+      pg->heartbeat_peer_lock.Lock();
+      dout(20) << i->first << " heartbeat_peers " << pg->heartbeat_peers << dendl;
+      for (set<int>::iterator p = pg->heartbeat_peers.begin();
+          p != pg->heartbeat_peers.end();
+          ++p)
+       if (osdmap->is_up(*p))
+         _add_heartbeat_peer(*p);
+      for (set<int>::iterator p = pg->probe_targets.begin();
+          p != pg->probe_targets.end();
+          ++p)
+       if (osdmap->is_up(*p))
+         _add_heartbeat_peer(*p);
+      pg->heartbeat_peer_lock.Unlock();
+    }
   }
 
   // include next and previous up osds to ensure we have a fully-connected set