From: Venky Shankar Date: Wed, 15 Jan 2020 15:38:02 +0000 (-0500) Subject: mgr: re-enable mds `scrub status` info in ceph status X-Git-Tag: v15.1.1~263^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d6ad0a255a27c5e3da20c7ae03066a692a6d49bb;p=ceph.git mgr: re-enable mds `scrub status` info in ceph status 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 --- diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc index 08b895bc1979..694ed74dc1bb 100644 --- a/src/mgr/DaemonServer.cc +++ b/src/mgr/DaemonServer.cc @@ -497,6 +497,16 @@ bool DaemonServer::handle_close(const ref_t& m) return true; } +void DaemonServer::update_task_status(DaemonKey key, const ref_t& 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& m) { DaemonKey key; @@ -601,25 +611,21 @@ bool DaemonServer::handle_report(const ref_t& 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); diff --git a/src/mgr/DaemonServer.h b/src/mgr/DaemonServer.h index 6289176c9e02..b21132e77bb8 100644 --- a/src/mgr/DaemonServer.h +++ b/src/mgr/DaemonServer.h @@ -145,6 +145,8 @@ private: } }; + void update_task_status(DaemonKey key, const ref_t& m); + public: int init(uint64_t gid, entity_addrvec_t client_addrs); void shutdown(); diff --git a/src/mgr/DaemonState.h b/src/mgr/DaemonState.h index 1b9ef543dc3b..1c3b785f25bc 100644 --- a/src/mgr/DaemonState.h +++ b/src/mgr/DaemonState.h @@ -144,7 +144,6 @@ class DaemonState bool service_daemon = false; utime_t service_status_stamp; std::map service_status; - std::map task_status; utime_t last_service_beacon; // running config