]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: handle rank change in bootstrap
authorSage Weil <sage@newdream.net>
Tue, 22 Nov 2011 18:08:48 +0000 (10:08 -0800)
committerSage Weil <sage@newdream.net>
Tue, 22 Nov 2011 18:08:48 +0000 (10:08 -0800)
The rank can change either because we probe and get a new monmap, or
because we get one via paxos.  Move the checks to bootstrap() to catch
both cases.

Signed-off-by: Sage Weil <sage@newdream.net>
src/mon/Monitor.cc
src/mon/MonmapMonitor.cc

index 538dff529d5954622b2e14889b1bb5af5e19aa02..f45b4edc0a0fc90122bf0b94c1fc8c2046d49773 100644 (file)
@@ -234,7 +234,16 @@ void Monitor::bootstrap()
   cancel_probe_timeout();
 
   // note my rank
-  rank = monmap->get_rank(name);
+  int newrank = monmap->get_rank(name);
+  if (newrank < 0 && rank >= 0) {
+    dout(0) << " removed from monmap, suicide." << dendl;
+    exit(0);
+  }
+  if (newrank != rank) {
+    dout(0) << " my rank is now " << newrank << " (was " << rank << ")" << dendl;
+    messenger->set_myname(entity_name_t::MON(newrank));
+    rank = newrank;
+  }
 
   // reset
   state = STATE_PROBING;
index f4f2aa6b2f20a65198e439a83cd28c01784e6877..4d30561e1da1098ae50c69bd06d398f620a109d2 100644 (file)
@@ -84,17 +84,6 @@ bool MonmapMonitor::update_from_paxos()
       mon->store->erase_ss("mkfs", "monmap");
   }
 
-  int rank = mon->monmap->get_rank(mon->name);
-  if (rank < 0 && mon->rank >= 0) {
-    dout(0) << " removed from monmap, suicide." << dendl;
-    exit(0);
-  }
-  if (rank != mon->rank) {
-    dout(0) << " my rank is now " << rank << " (was " << mon->rank << ")" << dendl;
-    mon->messenger->set_myname(entity_name_t::MON(rank));
-    mon->rank = rank;
-  }
-  
   if (need_restart)
     mon->bootstrap();
   return true;