From: Kefu Chai Date: Sun, 14 Mar 2021 03:56:59 +0000 (+0800) Subject: osd: drop entry in failure_pending when resetting stale peer X-Git-Tag: v17.1.0~2535^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=ff077fc3ea7d1595679c7053cda3b16d68aefd01;p=ceph.git osd: drop entry in failure_pending when resetting stale peer no need to keep it in the pending list anymore. Signed-off-by: Kefu Chai --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 25251d2907aca..7175792bc2a15 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -5310,14 +5310,15 @@ void OSD::reset_heartbeat_peers(bool all) stale -= cct->_conf.get_val("osd_heartbeat_stale"); std::lock_guard l(heartbeat_lock); for (auto it = heartbeat_peers.begin(); it != heartbeat_peers.end();) { - HeartbeatInfo& hi = it->second; + auto& [peer, hi] = *it; if (all || hi.is_stale(stale)) { hi.clear_mark_down(); // stop sending failure_report to mon too - failure_queue.erase(it->first); - heartbeat_peers.erase(it++); + failure_queue.erase(peer); + failure_pending.erase(peer); + it = heartbeat_peers.erase(it); } else { - it++; + ++it; } } }