mirror of
https://github.com/ceph/ceph
synced 2025-04-01 23:02:17 +00:00
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:
parent
3aa61a0beb
commit
f985de28f8
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user