]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: drop entry in failure_pending when resetting stale peer 40033/head
authorKefu Chai <kchai@redhat.com>
Sun, 14 Mar 2021 03:56:59 +0000 (11:56 +0800)
committerKefu Chai <kchai@redhat.com>
Fri, 19 Mar 2021 16:04:32 +0000 (00:04 +0800)
no need to keep it in the pending list anymore.

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/osd/OSD.cc

index 25251d2907aca06c08cfd2d15fd6d5bb04b67e23..7175792bc2a159c3040abbdfd008379f7559f605 100644 (file)
@@ -5310,14 +5310,15 @@ void OSD::reset_heartbeat_peers(bool all)
   stale -= cct->_conf.get_val<int64_t>("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;
     }
   }
 }