From a227a242efdeb5c824828b3f94ea7d1a35c7ccd0 Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Thu, 6 Jun 2019 10:05:09 -0700 Subject: [PATCH] elector: hoist defer into ElectionLogic Signed-off-by: Greg Farnum --- src/mon/Elector.cc | 18 +++++++++++------- src/mon/Elector.h | 3 ++- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/mon/Elector.cc b/src/mon/Elector.cc index bc1bb438b87..85ec8c619eb 100644 --- a/src/mon/Elector.cc +++ b/src/mon/Elector.cc @@ -152,19 +152,23 @@ void Elector::start() reset_timer(); } -void Elector::defer(int who) +void ElectionLogic::defer(int who) { dout(5) << "defer to " << who << dendl; - if (logic.electing_me) { + if (electing_me) { // drop out - logic.acked_me.clear(); - peer_info.clear(); - logic.electing_me = false; + acked_me.clear(); + electing_me = false; } // ack them - logic.leader_acked = who; + leader_acked = who; + elector->_defer_to(who); +} + +void Elector::_defer_to(int who) +{ MMonElection *m = new MMonElection(MMonElection::OP_ACK, logic.epoch, mon->monmap); m->mon_features = ceph::features::mon::get_supported(); m->mon_release = ceph_release(); @@ -356,7 +360,7 @@ void ElectionLogic::handle_propose_logic(epoch_t mepoch, int from) if (leader_acked < 0 || // haven't acked anyone yet, or leader_acked > from || // they would win over who you did ack, or leader_acked == from) { // this is the guy we're already deferring to - elector->defer(from); + defer(from); } else { // ignore them! dout(5) << "no, we already acked " << leader_acked << dendl; diff --git a/src/mon/Elector.h b/src/mon/Elector.h index e1659f37cb4..538ba8f6427 100644 --- a/src/mon/Elector.h +++ b/src/mon/Elector.h @@ -39,6 +39,7 @@ public: electing_me(false), leader_acked(-1) {} void bump_epoch(epoch_t e); + void defer(int who); void handle_propose_logic(epoch_t mepoch, int from); private: @@ -219,7 +220,7 @@ private: * * @param who Some other monitor's numeric identifier. */ - void defer(int who); + void _defer_to(int who); /** * The election has taken too long and has expired. * -- 2.39.5