]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/mon/Monitor.h
import quincy beta 17.1.0
[ceph.git] / ceph / src / mon / Monitor.h
index ccdd5fe65d5718bb37bbfe16acc0e4ae188caa2c..454daf63c6c7583128633ad8aa511353c98b4e94 100644 (file)
@@ -216,6 +216,19 @@ public:
 
   std::vector<DaemonHealthMetric> get_health_metrics();
 
+  int quorum_age() const {
+    auto age = std::chrono::duration_cast<std::chrono::seconds>(
+      ceph::mono_clock::now() - quorum_since);
+    return age.count();
+  }
+
+  bool is_mon_down() const {
+    int max = monmap->size();
+    int actual = get_quorum().size();
+    auto now = ceph::real_clock::now();
+    return actual < max && now > monmap->created.to_real_time();
+  }
+
   // -- elector --
 private:
   std::unique_ptr<Paxos> paxos;
@@ -251,16 +264,16 @@ private:
   bool stretch_mode_engaged{false};
   bool degraded_stretch_mode{false};
   bool recovering_stretch_mode{false};
-  string stretch_bucket_divider;
-  map<string, set<string>> dead_mon_buckets; // bucket->mon ranks, locations with no live mons
-  set<string> up_mon_buckets; // locations with a live mon
+  std::string stretch_bucket_divider;
+  std::map<std::string, std::set<std::string>> dead_mon_buckets; // bucket->mon ranks, locations with no live mons
+  std::set<std::string> up_mon_buckets; // locations with a live mon
   void do_stretch_mode_election_work();
 
   bool session_stretch_allowed(MonSession *s, MonOpRequestRef& op);
   void disconnect_disallowed_stretch_sessions();
   void set_elector_disallowed_leaders(bool allow_election);
 
-  map <string,string> crush_loc;
+  std::map<std::string,std::string> crush_loc;
   bool need_set_crush_loc{false};
 public:
   bool is_stretch_mode() { return stretch_mode_engaged; }
@@ -281,15 +294,15 @@ public:
    */
   void try_engage_stretch_mode();
   void maybe_go_degraded_stretch_mode();
-  void trigger_degraded_stretch_mode(const set<string>& dead_mons,
-                                    const set<int>& dead_buckets);
+  void trigger_degraded_stretch_mode(const std::set<std::string>& dead_mons,
+                                    const std::set<int>& dead_buckets);
   void set_degraded_stretch_mode();
   void go_recovery_stretch_mode();
   void set_recovery_stretch_mode();
   void trigger_healthy_stretch_mode();
   void set_healthy_stretch_mode();
   void enable_stretch_mode();
-  void set_mon_crush_location(const string& loc);
+  void set_mon_crush_location(const std::string& loc);
 
   
 private:
@@ -894,7 +907,7 @@ public:
         }
         cmdmap_t cmdmap;
         std::ostringstream ds;
-        string prefix;
+        std::string prefix;
         cmdmap_from_json(m->cmd, &cmdmap, ds);
         cmd_getval(cmdmap, "prefix", prefix);
         if (prefix != "config set" && prefix != "config-key set")
@@ -995,8 +1008,8 @@ private:
   void count_metadata(const std::string& field, ceph::Formatter *f);
   void count_metadata(const std::string& field, std::map<std::string,int> *out);
   // get_all_versions() gathers version information from daemons for health check
-  void get_all_versions(std::map<string, std::list<std::string>> &versions);
-  void get_versions(std::map<string, std::list<std::string>> &versions);
+  void get_all_versions(std::map<std::string, std::list<std::string>> &versions);
+  void get_versions(std::map<std::string, std::list<std::string>> &versions);
 
   // features
   static CompatSet get_initial_supported_features();
@@ -1099,6 +1112,7 @@ public:
 #define CEPH_MON_FEATURE_INCOMPAT_NAUTILUS CompatSet::Feature(11, "nautilus ondisk layout")
 #define CEPH_MON_FEATURE_INCOMPAT_OCTOPUS CompatSet::Feature(12, "octopus ondisk layout")
 #define CEPH_MON_FEATURE_INCOMPAT_PACIFIC CompatSet::Feature(13, "pacific ondisk layout")
+#define CEPH_MON_FEATURE_INCOMPAT_QUINCY CompatSet::Feature(14, "quincy ondisk layout")
 // make sure you add your feature to Monitor::get_supported_features