]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: _reset() before updating state
authorSage Weil <sage@redhat.com>
Thu, 21 Aug 2014 23:18:01 +0000 (16:18 -0700)
committerSage Weil <sage@redhat.com>
Wed, 27 Aug 2014 21:36:08 +0000 (14:36 -0700)
In _reset() we call Paxos::restart(), which waits for commit completion,
and assumes the state hasn't been twiddled yet.

Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/Monitor.cc

index 8d4f026b9b9506cddc1f230a398b55baf577ee59..f9327ef9e2a6bd00f07057739e75a2d9a2e68ea4 100644 (file)
@@ -909,9 +909,6 @@ void Monitor::_reset()
 {
   dout(10) << __func__ << dendl;
 
-  assert(state == STATE_ELECTING ||
-        state == STATE_PROBING);
-
   cancel_probe_timeout();
   timecheck_finish();
 
@@ -1664,18 +1661,17 @@ void Monitor::handle_probe_reply(MMonProbe *m)
 void Monitor::join_election()
 {
   dout(10) << __func__ << dendl;
+  _reset();
   state = STATE_ELECTING;
 
   logger->inc(l_mon_num_elections);
-
-  _reset();
 }
 
 void Monitor::start_election()
 {
   dout(10) << "start_election" << dendl;
-  state = STATE_ELECTING;
   _reset();
+  state = STATE_ELECTING;
 
   logger->inc(l_mon_num_elections);
   logger->inc(l_mon_election_call);