From: Greg Farnum Date: Thu, 20 Jan 2011 21:56:06 +0000 (-0800) Subject: MDSMonitor: On restarting MDSes; set to standby-replay if appropriate. X-Git-Tag: v0.25~251^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=74ce6e1bf70ff09db8dc68da552d230b2a5933c4;p=ceph.git MDSMonitor: On restarting MDSes; set to standby-replay if appropriate. 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 --- diff --git a/src/mon/MDSMonitor.cc b/src/mon/MDSMonitor.cc index 3e4efb40d411..5d8c00ae24ef 100644 --- a/src/mon/MDSMonitor.cc +++ b/src/mon/MDSMonitor.cc @@ -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;