From c6351315fb67557319cc5e9b3aba393e850f04fc Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 25 Jul 2019 12:42:34 -0500 Subject: [PATCH] osd: mark down heartbeat connections on shutdown This ensures that heartbeat_reset() gets call and we clean up the ref loop between the Connections and Sessions. Signed-off-by: Sage Weil --- src/osd/OSD.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 200021fa3a8..4de931f4016 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -3432,9 +3432,15 @@ int OSD::shutdown() std::lock_guard l{heartbeat_lock}; heartbeat_stop = true; heartbeat_cond.notify_all(); + heartbeat_peers.clear(); } heartbeat_thread.join(); + hb_back_server_messenger->mark_down_all(); + hb_front_server_messenger->mark_down_all(); + hb_front_client_messenger->mark_down_all(); + hb_back_client_messenger->mark_down_all(); + osd_op_tp.drain(); osd_op_tp.stop(); dout(10) << "op sharded tp stopped" << dendl; @@ -4927,6 +4933,7 @@ bool OSD::heartbeat_reset(Connection *con) { std::lock_guard l(heartbeat_lock); auto s = con->get_priv(); + dout(20) << __func__ << " con " << con << " s " << s.get() << dendl; con->set_priv(nullptr); if (s) { if (is_stopping()) { -- 2.39.5