diff options
author | Sage Weil <sage@inktank.com> | 2013-05-29 12:24:04 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-05-29 22:43:49 -0700 |
commit | a4d3b47a923ea28a52b1afa5e559ef0ccaefb9e0 (patch) | |
tree | 9d53871cb5fbbc6aaabecdf4e9d800f0cf307bb4 /src | |
parent | b586f4a92dae1caca32f9bcd392467da28f607bb (diff) | |
download | ceph-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>
Diffstat (limited to 'src')
-rw-r--r-- | src/osd/OSD.cc | 36 |
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 |