From 0b2d88e15fc31543beebada9f7b5261ba94fd9c9 Mon Sep 17 00:00:00 2001 From: Prashant D Date: Wed, 1 Apr 2026 15:14:56 -0400 Subject: [PATCH] ceph_mon: Fix shutdown order to destroy Monitor before closing mon store Reorder monitor shutdown to ensure all SyncProvider iterators are destroyed before the underlying mon store is closed. This avoids iterator cleanup paths entering RocksDB internals after the DB has already been closed, which can result in mutex lock failures and process aborts. Fixes: https://tracker.ceph.com/issues/75834 Signed-off-by: Prashant D (cherry picked from commit 81bd13981a1e020578335ca61bba0db05848631b) --- src/ceph_mon.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/ceph_mon.cc b/src/ceph_mon.cc index 63eb252e38f5..03c0033eb73a 100644 --- a/src/ceph_mon.cc +++ b/src/ceph_mon.cc @@ -899,14 +899,15 @@ int main(int argc, const char **argv) msgr->wait(); mgr_msgr->wait(); - store.close(); - unregister_async_signal_handler(SIGHUP, handle_mon_signal); unregister_async_signal_handler(SIGINT, handle_mon_signal); unregister_async_signal_handler(SIGTERM, handle_mon_signal); shutdown_async_signal_handler(); + // Destroy the Monitor (and its iterators) before closing the store. delete mon; + store.close(); + delete msgr; delete mgr_msgr; -- 2.47.3