]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: fix mds cluster expansion
authorSage Weil <sage@newdream.net>
Tue, 23 Dec 2008 20:14:21 +0000 (12:14 -0800)
committerSage Weil <sage@newdream.net>
Tue, 23 Dec 2008 20:14:21 +0000 (12:14 -0800)
If we can't find a suitable standby, stop looping.

src/mon/MDSMonitor.cc

index ca8be8359a3a67875bb80576b82bfb8aa6ecd766..efb6b14b6dd60c2e7e53c352fcad3ef78b0c62e2 100644 (file)
@@ -508,20 +508,21 @@ void MDSMonitor::tick()
     while (pending_mdsmap.is_in(mds))
       mds++;
     entity_addr_t addr;
-    if (pending_mdsmap.find_standby_for(mds, addr)) {
-      dout(1) << "adding standby " << addr << " as mds" << mds << dendl;
+    if (!pending_mdsmap.find_standby_for(mds, addr))
+      break;
 
-      MDSMap::mds_info_t& info = pending_mdsmap.mds_info[addr];
-      info.mds = mds;
-      if (pending_mdsmap.stopped.count(mds))
-       info.state = MDSMap::STATE_STARTING;
-      else
-       info.state = MDSMap::STATE_CREATING;
-      info.inc = ++pending_mdsmap.inc[mds];
-      pending_mdsmap.in.insert(mds);
-      pending_mdsmap.up[mds] = addr;
-      do_propose = true;
-    }
+    dout(1) << "adding standby " << addr << " as mds" << mds << dendl;
+    
+    MDSMap::mds_info_t& info = pending_mdsmap.mds_info[addr];
+    info.mds = mds;
+    if (pending_mdsmap.stopped.count(mds))
+      info.state = MDSMap::STATE_STARTING;
+    else
+      info.state = MDSMap::STATE_CREATING;
+    info.inc = ++pending_mdsmap.inc[mds];
+    pending_mdsmap.in.insert(mds);
+    pending_mdsmap.up[mds] = addr;
+    do_propose = true;
   }
 
   // check beacon timestamps