diff options
-rw-r--r-- | src/mon/Paxos.cc | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/mon/Paxos.cc b/src/mon/Paxos.cc index 68e5ed1ee76..1c2333c0949 100644 --- a/src/mon/Paxos.cc +++ b/src/mon/Paxos.cc @@ -1087,6 +1087,7 @@ void Paxos::shutdown() { finish_contexts(g_ceph_context, waiting_for_commit, -ECANCELED); finish_contexts(g_ceph_context, waiting_for_readable, -ECANCELED); finish_contexts(g_ceph_context, waiting_for_active, -ECANCELED); + finish_contexts(g_ceph_context, proposals, -ECANCELED); } void Paxos::leader_init() @@ -1094,7 +1095,7 @@ void Paxos::leader_init() cancel_events(); new_value.clear(); if (!proposals.empty()) - proposals.clear(); + finish_contexts(g_ceph_context, proposals, -EAGAIN); going_to_bootstrap = false; @@ -1121,6 +1122,7 @@ void Paxos::peon_init() // no chance to write now! finish_contexts(g_ceph_context, waiting_for_writeable, -EAGAIN); finish_contexts(g_ceph_context, waiting_for_commit, -EAGAIN); + finish_contexts(g_ceph_context, proposals, -EAGAIN); } void Paxos::restart() @@ -1128,13 +1130,13 @@ void Paxos::restart() dout(10) << "restart -- canceling timeouts" << dendl; cancel_events(); new_value.clear(); - dout(10) << __func__ << " -- clearing queued proposals" << dendl; - if (!proposals.empty()) - proposals.clear(); state = STATE_RECOVERING; going_to_bootstrap = false; + if (!proposals.empty()) + finish_contexts(g_ceph_context, proposals, -EAGAIN); + finish_contexts(g_ceph_context, waiting_for_commit, -EAGAIN); finish_contexts(g_ceph_context, waiting_for_active, -EAGAIN); } |