From 9f91df6bedb8662239bb603e6b60ce78d14714c0 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 6 Jul 2017 17:53:34 -0400 Subject: [PATCH] mon/MgrMonitor: clear last_beacon after mon election The last_beacon map is local to an election interval; if there is a new election completed we should reset it or else we may kill an apparently laggy mgr that hasn't been able to get a beacon processed due to the mon quorum changing, or had its beacon processed on a different leader. Signed-off-by: Sage Weil --- src/mon/MgrMonitor.cc | 7 +++++++ src/mon/MgrMonitor.h | 2 ++ 2 files changed, 9 insertions(+) diff --git a/src/mon/MgrMonitor.cc b/src/mon/MgrMonitor.cc index 5420bdee3d9..e1688a39681 100644 --- a/src/mon/MgrMonitor.cc +++ b/src/mon/MgrMonitor.cc @@ -485,6 +485,13 @@ void MgrMonitor::tick() } } +void MgrMonitor::on_restart() +{ + // Clear out the leader-specific state. + last_beacon.clear(); +} + + bool MgrMonitor::promote_standby() { assert(pending_map.active_gid == 0); diff --git a/src/mon/MgrMonitor.h b/src/mon/MgrMonitor.h index ca363ddeef6..0dc1af571de 100644 --- a/src/mon/MgrMonitor.h +++ b/src/mon/MgrMonitor.h @@ -79,6 +79,8 @@ public: void send_digests(); void on_active() override; + void on_restart() override; + void get_health(list >& summary, list > *detail, CephContext *cct) const override; -- 2.47.3