]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr: indicate map message is acked instead of unhandled
authorPatrick Donnelly <pdonnell@ibm.com>
Tue, 18 Feb 2025 19:20:57 +0000 (14:20 -0500)
committerPatrick Donnelly <pdonnell@ibm.com>
Fri, 28 Feb 2025 00:55:47 +0000 (19:55 -0500)
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 <pdonnell@ibm.com>
src/mgr/Mgr.cc
src/mgr/Mgr.h
src/mgr/MgrStandby.cc

index 83c29388f82af2fff6a3c165d37e7c6b44e60767..418e8ae984aee0c5fe3d402d7dee0645adb7e760 100644 (file)
 #  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<Message>& m)
+Dispatcher::dispatch_result_t Mgr::ms_dispatch2(const ref_t<Message>& m)
 {
   dout(10) << *m << dendl;
   std::lock_guard l(lock);
@@ -593,16 +595,16 @@ bool Mgr::ms_dispatch2(const ref_t<Message>& m)
   switch (m->get_type()) {
     case MSG_MGR_DIGEST:
       handle_mgr_digest(ref_cast<MMgrDigest>(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<MFSMap>(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<Message>& 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<MServiceMap>(m));
       //no users: py_module_registry->notify_all("service_map", "");
-      break;
+      return Dispatcher::ACKNOWLEDGED();
     case MSG_LOG:
       handle_log(ref_cast<MLog>(m));
-      break;
+      return Dispatcher::HANDLED();
     case MSG_KV_DATA:
       {
        auto msg = ref_cast<MKVData>(m);
@@ -654,12 +656,10 @@ bool Mgr::ms_dispatch2(const ref_t<Message>& m)
          }
        }
       }
-      break;
-
+      return Dispatcher::HANDLED();
     default:
-      return false;
+      return Dispatcher::UNHANDLED();
   }
-  return true;
 }
 
 
index b00590881d476f6104f6ae713527ca8b9e82034b..9bfb8c5bc4efb39da10ee19cc00a908c3578e4f9 100644 (file)
 // Python.h comes first because otherwise it clobbers ceph's assert
 #include <Python.h>
 
-#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<Message>& m);
+  Dispatcher::dispatch_result_t ms_dispatch2(const ceph::ref_t<Message>& m);
 
   void background_init(Context *completion);
 
index cb2bd10f92dd02f1028d01490539f0f3ddcb9ee9..8795ad7f3a01ce840cb85d1d303f08cf83ae2de2 100644 (file)
@@ -407,21 +407,19 @@ Dispatcher::dispatch_result_t MgrStandby::ms_dispatch2(const ref_t<Message>& 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<MMgrMap>(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;
 }