]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr: re-enable mds `scrub status` info in ceph status
authorVenky Shankar <vshankar@redhat.com>
Wed, 15 Jan 2020 15:38:02 +0000 (10:38 -0500)
committerVenky Shankar <vshankar@redhat.com>
Tue, 18 Feb 2020 04:45:45 +0000 (23:45 -0500)
MDS does not register with manager, therefore `task status`
(scrub status updates) were not getting displayed in ceph
status output.

Signed-off-by: Venky Shankar <vshankar@redhat.com>
src/mgr/DaemonServer.cc
src/mgr/DaemonServer.h
src/mgr/DaemonState.h

index 08b895bc1979fb91b6ee42c4d6085f06eed234da..694ed74dc1bbb3ee4618ce0c809ad1ad97819037 100644 (file)
@@ -497,6 +497,16 @@ bool DaemonServer::handle_close(const ref_t<MMgrClose>& m)
   return true;
 }
 
+void DaemonServer::update_task_status(DaemonKey key, const ref_t<MMgrReport>& m) {
+  dout(10) << "got task status from " << key << dendl;
+
+  auto p = pending_service_map.get_daemon(key.type, key.name);
+  if (!map_compare(p.first->task_status, *m->task_status)) {
+    p.first->task_status = *m->task_status;
+    pending_service_map_dirty = pending_service_map.epoch;
+  }
+}
+
 bool DaemonServer::handle_report(const ref_t<MMgrReport>& m)
 {
   DaemonKey key;
@@ -601,25 +611,21 @@ bool DaemonServer::handle_report(const ref_t<MMgrReport>& m)
                  << " ignored " << daemon->ignored_mon_config << dendl;
       }
 
+      utime_t now = ceph_clock_now();
       if (daemon->service_daemon) {
-        utime_t now = ceph_clock_now();
         if (m->daemon_status) {
           daemon->service_status_stamp = now;
           daemon->service_status = *m->daemon_status;
         }
-        if (m->task_status && !map_compare(daemon->task_status, *m->task_status)) {
-          auto [d, added] = pending_service_map.get_daemon(m->service_name,
-                                                          m->daemon_name);
-         if (!added) {
-            daemon->task_status = *m->task_status;
-            d->task_status = *m->task_status;
-            pending_service_map_dirty = pending_service_map.epoch;
-         }
-        }
         daemon->last_service_beacon = now;
       } else if (m->daemon_status) {
         derr << "got status from non-daemon " << key << dendl;
       }
+      // update task status
+      if (m->task_status) {
+        update_task_status(key, m);
+        daemon->last_service_beacon = now;
+      }
       if (m->get_connection()->peer_is_osd() || m->get_connection()->peer_is_mon()) {
         // only OSD and MON send health_checks to me now
         daemon->daemon_health_metrics = std::move(m->daemon_health_metrics);
index 6289176c9e02fc59fc456cb9148bee6e710daef1..b21132e77bb80a162c2d76794dc7692c71c8fd2c 100644 (file)
@@ -145,6 +145,8 @@ private:
     }
   };
 
+  void update_task_status(DaemonKey key, const ref_t<MMgrReport>& m);
+
 public:
   int init(uint64_t gid, entity_addrvec_t client_addrs);
   void shutdown();
index 1b9ef543dc3b7ef7ed9f025d0e91e7ab6424ae26..1c3b785f25bc21d41df39eb74c7d8133857321bf 100644 (file)
@@ -144,7 +144,6 @@ class DaemonState
   bool service_daemon = false;
   utime_t service_status_stamp;
   std::map<std::string, std::string> service_status;
-  std::map<std::string, std::string> task_status;
   utime_t last_service_beacon;
 
   // running config