From ff077fc3ea7d1595679c7053cda3b16d68aefd01 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Sun, 14 Mar 2021 11:56:59 +0800 Subject: [PATCH] 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 --- src/osd/OSD.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 25251d2907a..7175792bc2a 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; } } } -- 2.39.5