From 7ee3f0c4da1548df761318b5fc15c1ad58898793 Mon Sep 17 00:00:00 2001 From: Jane Zhu Date: Fri, 22 May 2026 22:50:54 +0000 Subject: [PATCH] osd: unregister admin socket commands in fast shutdown Fixes: https://tracker.ceph.com/issues/70346 Signed-off-by: Jane Zhu --- src/os/bluestore/BlueStore.cc | 7 +++++++ src/osd/OSD.cc | 17 +++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index b5619a49ffc..b57a1b790eb 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -14512,6 +14512,9 @@ uint64_t BlueStore::_assign_blobid(TransContext *txc) void BlueStore::get_db_statistics(Formatter *f) { + if (db == nullptr) { + return; + } db->get_statistics(f); } @@ -19395,6 +19398,10 @@ const string prefix_other = "Z"; //Itrerates through the db and collects the stats void BlueStore::generate_db_histogram(Formatter *f) { + if (db == nullptr) { + return; + } + //globals uint64_t num_onodes = 0; uint64_t num_shards = 0; diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index b281be2f379..d58e86d87a9 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -2424,7 +2424,7 @@ OSD::OSD(CephContext *cct_, dev_path(dev), journal_path(jdev), store_is_rotational(store->is_rotational()), trace_endpoint("0.0.0.0", 0, "osd"), - asok_hook(NULL), + asok_hook(nullptr), m_osd_pg_epoch_max_lag_factor(cct->_conf.get_val( "osd_pg_epoch_max_lag_factor")), osd_compat(get_osd_compat_set()), @@ -2441,7 +2441,7 @@ OSD::OSD(CephContext *cct_, heartbeat_dispatcher(this), op_tracker(cct, cct->_conf->osd_enable_op_tracker, cct->_conf->osd_num_op_tracker_shard), - test_ops_hook(NULL), + test_ops_hook(nullptr), op_shardedwq( this, ceph::make_timespan(cct->_conf->osd_op_thread_timeout), @@ -4651,6 +4651,15 @@ int OSD::shutdown() tick_timer_without_osd_lock.shutdown(); } + // unregister commands + cct->get_admin_socket()->unregister_commands(asok_hook); + delete asok_hook; + asok_hook = nullptr; + + cct->get_admin_socket()->unregister_commands(test_ops_hook); + delete test_ops_hook; + test_ops_hook = nullptr; + osd_lock.unlock(); utime_t start_time_osd_drain = ceph_clock_now(); @@ -4705,11 +4714,11 @@ int OSD::shutdown() // unregister commands cct->get_admin_socket()->unregister_commands(asok_hook); delete asok_hook; - asok_hook = NULL; + asok_hook = nullptr; cct->get_admin_socket()->unregister_commands(test_ops_hook); delete test_ops_hook; - test_ops_hook = NULL; + test_ops_hook = nullptr; osd_lock.unlock(); -- 2.47.3