mon->join_election();
}
+void ElectionLogic::declare_standalone_victory()
+{
+ assert(elector_paxos_size() == 1 && elector_my_rank() == 0);
+ init();
+ bump_epoch(epoch+1);
+}
void ElectionLogic::start()
{
ElectionLogic(Elector *e) : elector(e), epoch(0), participating(true),
electing_me(false), leader_acked(-1) {}
- void init();
- void bump_epoch(epoch_t e);
+ void declare_standalone_victory();
void start();
void defer(int who);
void end_election_period();
private:
+ void init();
+ void bump_epoch(epoch_t e);
void declare_victory();
// call-outs
void persist_epoch(epoch_t e);
*/
epoch_t get_epoch() { return logic.epoch; }
- /**
- * advance_epoch
- *
- * increase election epoch by 1
- */
- void advance_epoch() {
- logic.bump_epoch(logic.epoch + 1);
+ void declare_standalone_victory() {
+ logic.declare_standalone_victory();
}
/**
// bump election epoch, in case the previous epoch included other
// monitors; we need to be able to make the distinction.
- elector.logic.init();
- elector.advance_epoch();
+ elector.declare_standalone_victory();
rank = monmap->get_rank(name);
ceph_assert(rank == 0);