From 0a83cb99561b0f4786fdd39a9927c4b151e5c8b2 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 19 Sep 2012 14:34:56 -0700 Subject: [PATCH] mon: clean up recovered_leader() checks Assert they are called only once per machine per election epoch. Fix the recovered_peon() caller to do that. Signed-off-by: Sage Weil --- src/mon/Monitor.cc | 6 ++---- src/mon/Paxos.cc | 4 +++- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index 724fda9d5c741..88f76c9e4bad7 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -207,8 +207,7 @@ Monitor::~Monitor() void Monitor::recovered_leader(int id) { - if (paxos_recovered.count(id)) - return; + assert(paxos_recovered.count(id) == 0); paxos_recovered.insert(id); if (paxos_recovered.size() == paxos.size()) { dout(10) << "all paxos instances recovered, going writeable" << dendl; @@ -232,8 +231,7 @@ void Monitor::recovered_leader(int id) void Monitor::recovered_peon(int id) { - if (paxos_recovered.count(id)) - return; + assert(paxos_recovered.count(id) == 0); paxos_recovered.insert(id); if (paxos_recovered.size() == paxos.size()) { dout(10) << "all paxos instances recovered/leased" << dendl; diff --git a/src/mon/Paxos.cc b/src/mon/Paxos.cc index 4a2d1625bfe2b..0be63574530d6 100644 --- a/src/mon/Paxos.cc +++ b/src/mon/Paxos.cc @@ -679,7 +679,9 @@ void Paxos::handle_lease(MMonPaxos *lease) } state = STATE_ACTIVE; - mon->recovered_peon(machine_id); + + if (!mon->is_all_paxos_recovered()) + mon->recovered_peon(machine_id); dout(10) << "handle_lease on " << lease->last_committed << " now " << lease_expire << dendl; -- 2.39.5