]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mon/MgrStatMonitor: persist progress events
authorSage Weil <sage@redhat.com>
Tue, 5 Feb 2019 16:16:35 +0000 (10:16 -0600)
committerSage Weil <sage@redhat.com>
Fri, 8 Feb 2019 19:50:27 +0000 (13:50 -0600)
Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/MgrStatMonitor.cc
src/mon/MgrStatMonitor.h

index 006ef4231e3b516805b13eb8614276fd1bbf78a7..1b8ce998ff809b24b4872327bad2b212ccf66414 100644 (file)
@@ -50,8 +50,13 @@ void MgrStatMonitor::update_from_paxos(bool *need_bootstrap)
       auto p = bl.cbegin();
       decode(digest, p);
       decode(service_map, p);
+      if (!p.end()) {
+       decode(progress_events, p);
+      }
       dout(10) << __func__ << " v" << version
-              << " service_map e" << service_map.epoch << dendl;
+              << " service_map e" << service_map.epoch
+              << " " << progress_events.size() << "progress events"
+              << dendl;
     }
     catch (buffer::error& e) {
       derr << "failed to decode mgrstat state; luminous dev version?" << dendl;
@@ -119,6 +124,7 @@ void MgrStatMonitor::encode_pending(MonitorDBStore::TransactionRef t)
   encode(pending_digest, bl, mon->get_quorum_con_features());
   ceph_assert(pending_service_map_bl.length());
   bl.append(pending_service_map_bl);
+  encode(pending_progress_events, bl);
   put_version(t, version, bl);
   put_last_committed(t, version);
 
@@ -189,8 +195,10 @@ bool MgrStatMonitor::prepare_report(MonOpRequestRef op)
   if (m->service_map_bl.length()) {
     pending_service_map_bl.swap(m->service_map_bl);
   }
+  pending_progress_events.swap(m->progress_events);
   dout(10) << __func__ << " " << pending_digest << ", "
-          << pending_health_checks.checks.size() << " health checks" << dendl;
+          << pending_health_checks.checks.size() << " health checks, "
+          << progress_events.size() << "progress events" << dendl;
   dout(20) << "pending_digest:\n";
   JSONFormatter jf(true);
   jf.open_object_section("pending_digest");
@@ -205,6 +213,15 @@ bool MgrStatMonitor::prepare_report(MonOpRequestRef op)
   jf.close_section();
   jf.flush(*_dout);
   *_dout << dendl;
+  dout(20) << "progress events:\n";
+  JSONFormatter jf(true);
+  jf.open_object_section("progress_events");
+  for (auto& i : pending_progress_events) {
+    jf.dump_object(i.first.c_str(), i.second);
+  }
+  jf.close_section();
+  jf.flush(*_dout);
+  *_dout << dendl;
   return true;
 }
 
index ee77bf3fc2edf632e3e6ca4d93942a0de4311aac..0189c05e41686765ef5da14dfb198cfd2a7d595b 100644 (file)
@@ -13,10 +13,12 @@ class MgrStatMonitor : public PaxosService {
   version_t version = 0;
   PGMapDigest digest;
   ServiceMap service_map;
+  std::map<std::string,ProgressEvent> progress_events;
 
   // pending commit
   PGMapDigest pending_digest;
   health_check_map_t pending_health_checks;
+  std::map<std::string,ProgressEvent> pending_progress_events;
   bufferlist pending_service_map_bl;
 
 public:
@@ -64,6 +66,10 @@ public:
     return service_map;
   }
 
+  const std::map<std::string,ProgressEvent>& get_progress_events() {
+    return progress_events;
+  }
+
   // pg stat access
   const pool_stat_t* get_pool_stat(int64_t poolid) const {
     auto i = digest.pg_pool_sum.find(poolid);