From: Patrick Donnelly Date: Tue, 18 Feb 2025 19:20:57 +0000 (-0500) Subject: mgr: indicate map message is acked instead of unhandled X-Git-Tag: v20.0.0^2~1 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=56cb05775a937159ee0e6e26e30fe204accb5223;p=ceph.git mgr: indicate map message is acked instead of unhandled This avoids messages like: 2025-02-18T05:31:17.738+0000 7f5206546640 0 ms_deliver_dispatch: unhandled message 0x5632d05f0700 fsmap(e 9) from mon.0 v2:172.21.3.230:40412/0 Signed-off-by: Patrick Donnelly --- diff --git a/src/mgr/Mgr.cc b/src/mgr/Mgr.cc index 83c29388f82af..418e8ae984aee 100644 --- a/src/mgr/Mgr.cc +++ b/src/mgr/Mgr.cc @@ -25,15 +25,17 @@ # include "include/libcephsqlite.h" #endif -#include "mgr/MgrContext.h" - -#include "DaemonServer.h" -#include "messages/MMgrDigest.h" +#include "mds/FSMap.h" #include "messages/MCommand.h" #include "messages/MCommandReply.h" +#include "messages/MFSMap.h" +#include "messages/MKVData.h" #include "messages/MLog.h" +#include "messages/MMgrDigest.h" #include "messages/MServiceMap.h" -#include "messages/MKVData.h" + +#include "MgrContext.h" +#include "DaemonServer.h" #include "PyModule.h" #include "Mgr.h" @@ -585,7 +587,7 @@ void Mgr::handle_mon_map() daemon_state.cull("mon", names_exist); } -bool Mgr::ms_dispatch2(const ref_t& m) +Dispatcher::dispatch_result_t Mgr::ms_dispatch2(const ref_t& m) { dout(10) << *m << dendl; std::lock_guard l(lock); @@ -593,16 +595,16 @@ bool Mgr::ms_dispatch2(const ref_t& m) switch (m->get_type()) { case MSG_MGR_DIGEST: handle_mgr_digest(ref_cast(m)); - break; + return Dispatcher::HANDLED(); case CEPH_MSG_MON_MAP: /* MonClient passthrough of MonMap to us */ handle_mon_map(); /* use monc's monmap */ py_module_registry->notify_all("mon_map", ""); - break; + return Dispatcher::ACKNOWLEDGED(); case CEPH_MSG_FS_MAP: handle_fs_map(ref_cast(m)); py_module_registry->notify_all("fs_map", ""); - return false; // I shall let this pass through for Client + return Dispatcher::ACKNOWLEDGED(); case CEPH_MSG_OSD_MAP: handle_osd_map(); py_module_registry->notify_all("osd_map", ""); @@ -610,14 +612,14 @@ bool Mgr::ms_dispatch2(const ref_t& m) // Continuous subscribe, so that we can generate notifications // for our MgrPyModules objecter->maybe_request_map(); - break; + return Dispatcher::ACKNOWLEDGED(); case MSG_SERVICE_MAP: handle_service_map(ref_cast(m)); //no users: py_module_registry->notify_all("service_map", ""); - break; + return Dispatcher::ACKNOWLEDGED(); case MSG_LOG: handle_log(ref_cast(m)); - break; + return Dispatcher::HANDLED(); case MSG_KV_DATA: { auto msg = ref_cast(m); @@ -654,12 +656,10 @@ bool Mgr::ms_dispatch2(const ref_t& m) } } } - break; - + return Dispatcher::HANDLED(); default: - return false; + return Dispatcher::UNHANDLED(); } - return true; } diff --git a/src/mgr/Mgr.h b/src/mgr/Mgr.h index b00590881d476..9bfb8c5bc4efb 100644 --- a/src/mgr/Mgr.h +++ b/src/mgr/Mgr.h @@ -17,24 +17,23 @@ // Python.h comes first because otherwise it clobbers ceph's assert #include -#include "mds/FSMap.h" -#include "messages/MFSMap.h" -#include "msg/Messenger.h" #include "auth/Auth.h" #include "common/Finisher.h" #include "mon/MgrMap.h" +#include "msg/Dispatcher.h" +#include "msg/Messenger.h" +#include "ClusterState.h" #include "DaemonServer.h" -#include "PyModuleRegistry.h" - #include "DaemonState.h" -#include "ClusterState.h" +#include "PyModuleRegistry.h" class MCommand; class MMgrDigest; class MLog; class MServiceMap; class Objecter; +class MFSMap; class Mgr : public AdminSocketHook { protected: @@ -89,7 +88,7 @@ public: bool got_mgr_map(const MgrMap& m); - bool ms_dispatch2(const ceph::ref_t& m); + Dispatcher::dispatch_result_t ms_dispatch2(const ceph::ref_t& m); void background_init(Context *completion); diff --git a/src/mgr/MgrStandby.cc b/src/mgr/MgrStandby.cc index cb2bd10f92dd0..8795ad7f3a01c 100644 --- a/src/mgr/MgrStandby.cc +++ b/src/mgr/MgrStandby.cc @@ -407,21 +407,19 @@ Dispatcher::dispatch_result_t MgrStandby::ms_dispatch2(const ref_t& m) std::lock_guard l(lock); dout(10) << state_str() << " " << *m << dendl; + Dispatcher::dispatch_result_t r; + if (m->get_type() == MSG_MGR_MAP) { handle_mgr_map(ref_cast(m)); + r = Dispatcher::ACKNOWLEDGED(); } - bool handled = false; if (active_mgr) { auto am = active_mgr; lock.unlock(); - handled = am->ms_dispatch2(m); + r = am->ms_dispatch2(m); lock.lock(); } - if (m->get_type() == MSG_MGR_MAP) { - // let this pass through for mgrc - handled = false; - } - return handled; + return r; }