]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: refactor quorum age calculation
authorPatrick Donnelly <pdonnell@redhat.com>
Tue, 10 Dec 2019 00:12:12 +0000 (16:12 -0800)
committerCory Snyder <csnyder@iland.com>
Fri, 7 Jan 2022 09:59:18 +0000 (04:59 -0500)
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
(cherry picked from commit 1a9aab62b615830107ee28866630f043e1a01a35)

src/mon/Monitor.cc
src/mon/Monitor.h

index 3f2e2dc036663ac1ca1e81bf0d7a001127c51a42..dce5bb25b2cea4e10eb4de218fcc8feb8fba3314 100644 (file)
@@ -2595,8 +2595,7 @@ void Monitor::_quorum_status(Formatter *f, ostream& ss)
   if (!quorum.empty()) {
     f->dump_int(
       "quorum_age",
-      std::chrono::duration_cast<std::chrono::seconds>(
-       mono_clock::now() - quorum_since).count());
+      quorum_age());
   }
 
   f->open_object_section("features");
@@ -2631,8 +2630,7 @@ void Monitor::get_mon_status(Formatter *f)
   if (!quorum.empty()) {
     f->dump_int(
       "quorum_age",
-      std::chrono::duration_cast<std::chrono::seconds>(
-       mono_clock::now() - quorum_since).count());
+      quorum_age());
   }
 
   f->open_object_section("features");
@@ -2971,7 +2969,6 @@ void Monitor::get_cluster_status(stringstream &ss, Formatter *f,
 
   const auto&& fs_names = session->get_allowed_fs_names();
 
-  mono_clock::time_point now = mono_clock::now();
   if (f) {
     f->dump_stream("fsid") << monmap->get_fsid();
     healthmon()->get_health_status(false, f, nullptr);
@@ -2987,8 +2984,7 @@ void Monitor::get_cluster_status(stringstream &ss, Formatter *f,
       f->close_section();
       f->dump_int(
        "quorum_age",
-       std::chrono::duration_cast<std::chrono::seconds>(
-         mono_clock::now() - quorum_since).count());
+        quorum_age());
     }
     f->open_object_section("monmap");
     monmap->dump_summary(f);
@@ -3042,7 +3038,7 @@ void Monitor::get_cluster_status(stringstream &ss, Formatter *f,
       const auto quorum_names = get_quorum_names();
       const auto mon_count = monmap->mon_info.size();
       ss << "    mon: " << spacing << mon_count << " daemons, quorum "
-        << quorum_names << " (age " << timespan_str(now - quorum_since) << ")";
+        << quorum_names << " (age " << quorum_age() << ")";
       if (quorum_names.size() != mon_count) {
        std::list<std::string> out_of_q;
        for (size_t i = 0; i < monmap->ranks.size(); ++i) {
index ccdd5fe65d5718bb37bbfe16acc0e4ae188caa2c..e820e537a6179db68204686028fd30d33b9b72fa 100644 (file)
@@ -216,6 +216,11 @@ public:
 
   std::vector<DaemonHealthMetric> get_health_metrics();
 
+  int quorum_age() const {
+    auto age = ceph::mono_clock::now() - quorum_since;
+    return age.count();
+  }
+
   // -- elector --
 private:
   std::unique_ptr<Paxos> paxos;