]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/HealthMonitor: expire mutes based on ttl
authorSage Weil <sage@redhat.com>
Wed, 31 Jul 2019 00:44:59 +0000 (19:44 -0500)
committerSage Weil <sage@redhat.com>
Thu, 15 Aug 2019 01:37:00 +0000 (20:37 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/HealthMonitor.cc
src/mon/HealthMonitor.h

index 53325ddf7e9ecb403229f1e8615d5dcb956fec12..8b94cfb23344955cd5ce2de570f3a869813814cf 100644 (file)
@@ -349,11 +349,33 @@ void HealthMonitor::tick()
   if (check_leader_health()) {
     changed = true;
   }
+  if (check_mutes()) {
+    changed = true;
+  }
   if (changed) {
     propose_pending();
   }
 }
 
+bool HealthMonitor::check_mutes()
+{
+  bool changed = true;
+  auto now = ceph_clock_now();
+  auto p = pending_mutes.begin();
+  while (p != pending_mutes.end()) {
+    if (p->second.ttl != utime_t() &&
+       p->second.ttl <= now) {
+      mon->clog->info() << "Health alert mute " << p->first
+                       << " cleared (passed TTL " << p->second.ttl << ")";
+      p = pending_mutes.erase(p);
+      changed = true;
+    } else {
+      ++p;
+    }
+  }
+  return changed;
+}
+
 bool HealthMonitor::check_member_health()
 {
   dout(20) << __func__ << dendl;
index 113d261a1870df9a7f9ad3bdcef76fa31f0a60bd..a9315331bd2e2bd204a891128e56dcf6fde2992f 100644 (file)
@@ -46,6 +46,7 @@ public:
 
   bool check_leader_health();
   bool check_member_health();
+  bool check_mutes();
 
   void create_initial() override;
   void update_from_paxos(bool *need_bootstrap) override;