summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-05-29 12:24:04 -0700
committerSage Weil <sage@inktank.com>2013-05-29 22:43:49 -0700
commita4d3b47a923ea28a52b1afa5e559ef0ccaefb9e0 (patch)
tree9d53871cb5fbbc6aaabecdf4e9d800f0cf307bb4
parentb586f4a92dae1caca32f9bcd392467da28f607bb (diff)
downloadceph-a4d3b47a923ea28a52b1afa5e559ef0ccaefb9e0.tar.gz
osd: only add pg peers if active
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>
-rw-r--r--src/osd/OSD.cc36
1 files changed, 19 insertions, 17 deletions
diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc
index 505d21be0cf..c8a5b9a263e 100644
--- a/src/osd/OSD.cc
+++ b/src/osd/OSD.cc
@@ -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