From: Sage Weil Date: Thu, 6 Jun 2013 22:20:05 +0000 (-0700) Subject: mon/PaxosService: simplify is_writeable X-Git-Tag: v0.66~47^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f985de28f86675e974ac7842a49922a35fe24c6c;p=ceph.git 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 --- diff --git a/src/mon/PaxosService.h b/src/mon/PaxosService.h index dbe37434a71c4..2fd7515c32358 100644 --- a/src/mon/PaxosService.h +++ b/src/mon/PaxosService.h @@ -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); } /**