]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
MDSMonitor: On restarting MDSes; set to standby-replay if appropriate.
authorGreg Farnum <gregory.farnum@dreamhost.com>
Thu, 20 Jan 2011 21:56:06 +0000 (13:56 -0800)
committerGreg Farnum <gregory.farnum@dreamhost.com>
Mon, 24 Jan 2011 18:57:51 +0000 (10:57 -0800)
This way, if the primary MDS crashes and is replaced, but is supposed
to standby-replay its secondary on recovery, it will do so.

Signed-off-by: Greg Farnum <gregory.farnum@dreamhost.com>
src/mon/MDSMonitor.cc

index 3e4efb40d411d971f029ce9c15fba8a23d7e3911..5d8c00ae24ef48a2322102d882ae57b3f73b2304 100644 (file)
@@ -337,6 +337,16 @@ bool MDSMonitor::prepare_beacon(MMDSBeacon *m)
     info.standby_for_rank = m->get_standby_for_rank();
     info.standby_for_name = m->get_standby_for_name();
 
+
+    if (!info.standby_for_name.empty()) {
+      if (pending_mdsmap.find_by_name(info.standby_for_name))
+        info.standby_for_rank =
+            pending_mdsmap.find_by_name(info.standby_for_name)->rank;
+    }
+    if (info.standby_for_rank >= 0) {
+      info.state = MDSMap::STATE_STANDBY_REPLAY;
+    }
+
     // initialize the beacon timer
     last_beacon[gid].stamp = g_clock.now();
     last_beacon[gid].seq = seq;