From: Joao Eduardo Luis Date: Wed, 10 Dec 2014 17:46:35 +0000 (+0000) Subject: mon: Paxos: reset accept timeout before submiting work to the store X-Git-Tag: v0.91~55^2~10^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=18534615f184ba56b441fd1d4242eb06debdfe13;p=ceph.git mon: Paxos: reset accept timeout before submiting work to the store Otherwise we may trigger the timeout while waiting for the work to be committed to the store -- and it would only take the write to take a bit longer than 10 seconds (default accept timeout). We do wait for the work to be properly committed to the store before extending the lease though. Fixes: #10220 Signed-off-by: Joao Eduardo Luis --- diff --git a/src/mon/Paxos.cc b/src/mon/Paxos.cc index 231b1e5b73999..b677d01cc5703 100644 --- a/src/mon/Paxos.cc +++ b/src/mon/Paxos.cc @@ -846,6 +846,12 @@ void Paxos::commit_start() state = STATE_WRITING; else assert(0); + + if (mon->get_quorum().size() > 1) { + // cancel timeout event + mon->timer.cancel_event(accept_timeout_event); + accept_timeout_event = 0; + } } void Paxos::commit_finish() @@ -900,16 +906,12 @@ void Paxos::commit_finish() if (do_refresh()) { commit_proposal(); - - finish_contexts(g_ceph_context, waiting_for_commit); - if (mon->get_quorum().size() > 1) { - // cancel timeout event - mon->timer.cancel_event(accept_timeout_event); - accept_timeout_event = 0; extend_lease(); } + finish_contexts(g_ceph_context, waiting_for_commit); + assert(g_conf->paxos_kill_at != 10); finish_round();