mon/PaxosService: simplify is_writeable

Recast this in terms of paxos check + our conditions, and make it
match wait_for_writeable().

Signed-off-by: Sage Weil <sage@inktank.com>
This commit is contained in:
Sage Weil 2013-06-06 15:20:05 -07:00
parent 3aa61a0beb
commit f985de28f8

View File

@ -545,19 +545,16 @@ public:
* We consider to be writeable iff:
*
* - we are not proposing a new version;
* - our monitor is the leader;
* - we have a valid lease;
* - Paxos is not boostrapping.
* - Paxos is not recovering.
* - we are ready to be written to -- i.e., we have a pending value.
* - paxos is writeable
*
* @returns true if writeable; false otherwise
*/
bool is_writeable() {
return (is_active()
&& mon->is_leader()
&& paxos->is_lease_valid()
&& is_write_ready());
return
!is_proposing() &&
is_write_ready() &&
paxos->is_writeable();
}
/**
@ -621,12 +618,12 @@ public:
* @param c The callback to be awaken once we become writeable.
*/
void wait_for_writeable(Context *c) {
if (!is_proposing()) {
if (is_proposing())
wait_for_finished_proposal(c);
else if (!is_write_ready())
wait_for_active(c);
else
paxos->wait_for_writeable(c);
return;
}
wait_for_finished_proposal(c);
}
/**