]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
elector: hoist defer into ElectionLogic
authorGreg Farnum <gfarnum@redhat.com>
Thu, 6 Jun 2019 17:05:09 +0000 (10:05 -0700)
committerGreg Farnum <gfarnum@redhat.com>
Mon, 19 Aug 2019 20:04:59 +0000 (13:04 -0700)
Signed-off-by: Greg Farnum <gfarnum@redhat.com>
src/mon/Elector.cc
src/mon/Elector.h

index bc1bb438b872afc763c897500c55b76217a5652c..85ec8c619eb3d0e10500716916e7de830bcfb085 100644 (file)
@@ -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;
index e1659f37cb4d28513ef60ab86503e2588596c2d2..538ba8f642712d84ae9f6e30edb649a17b7845b2 100644 (file)
@@ -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.
    *