]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: calculate rank by addr, not name
authorSage Weil <sage@newdream.net>
Wed, 23 Nov 2011 00:02:28 +0000 (16:02 -0800)
committerSage Weil <sage@newdream.net>
Wed, 23 Nov 2011 00:04:10 +0000 (16:04 -0800)
Signed-off-by: Sage Weil <sage@newdream.net>
src/mon/MonMap.h
src/mon/Monitor.cc

index bc302f9ef142b32cdd8d997942a39d831914fe9f..c46c0bda2c8dcebd2f52294de41d8cc97f748965 100644 (file)
@@ -114,6 +114,12 @@ class MonMap {
        return i;
     return -1;
   }
+  int get_rank(entity_addr_t a) {
+    for (unsigned i=0; i<rank_addr.size(); i++)
+      if (rank_addr[i] == a)
+       return i;
+    return -1;
+  }
   bool get_addr_name(entity_addr_t a, string& name) {
     if (addr_name.count(a) == 0)
       return false;
index a722a76db4f53f02e4520a77c15e4c1edeb3f99f..bfd3b8aa844eb3522e0971bfc7d0442719ec7f36 100644 (file)
@@ -114,7 +114,7 @@ Monitor::Monitor(CephContext* cct_, string nm, MonitorStore *s, Messenger *m, Mo
   paxos(PAXOS_NUM), paxos_service(PAXOS_NUM),
   routed_request_tid(0)
 {
-  rank = map->get_rank(name);
+  rank = -1;
 
   paxos_service[PAXOS_MDSMAP] = new MDSMonitor(this, add_paxos(PAXOS_MDSMAP));
   paxos_service[PAXOS_MONMAP] = new MonmapMonitor(this, add_paxos(PAXOS_MONMAP));
@@ -171,6 +171,8 @@ Monitor::~Monitor()
 void Monitor::init()
 {
   lock.Lock();
+
+  rank = monmap->get_rank(messenger->get_myaddr());
   
   dout(1) << "init fsid " << monmap->fsid << dendl;
   
@@ -234,7 +236,7 @@ void Monitor::bootstrap()
   cancel_probe_timeout();
 
   // note my rank
-  int newrank = monmap->get_rank(name);
+  int newrank = monmap->get_rank(messenger->get_myaddr());
   if (newrank < 0 && rank >= 0) {
     dout(0) << " removed from monmap, suicide." << dendl;
     exit(0);