From: Sage Weil Date: Fri, 30 Apr 2010 23:24:34 +0000 (-0700) Subject: mon: correctly update up map when taking over for creating|starting mds X-Git-Tag: v0.20.1~22 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=fe922d177b65d39e13869618fbd4efd45d73df20;p=ceph.git mon: correctly update up map when taking over for creating|starting mds Otherwise we can get crap like in <0> up <{0=4103}> failed <> stopped <> 4300: 192.168.141.103:6800/9446 '0' mds0.0 up:creating seq 2 --- diff --git a/src/mds/MDSMap.cc b/src/mds/MDSMap.cc index 4825b54a3e6..4695010460c 100644 --- a/src/mds/MDSMap.cc +++ b/src/mds/MDSMap.cc @@ -69,10 +69,8 @@ void MDSMap::print(ostream& out) out << "\ncompat " << compat << std::endl; out << "\nmax_mds " << max_mds << std::endl; - set upset; - get_up_mds_set(upset); out << "in <" << in << ">\n" - << "up <" << upset << ">\n" + << "up <" << up << ">\n" << "failed <" << failed << ">\n" << "stopped <" << stopped << ">\n"; diff --git a/src/mon/MDSMonitor.cc b/src/mon/MDSMonitor.cc index f7ebeab1e90..f4f18f32b3e 100644 --- a/src/mon/MDSMonitor.cc +++ b/src/mon/MDSMonitor.cc @@ -720,13 +720,16 @@ void MDSMonitor::tick() default: assert(0); } - si.rank = info.rank; + info.state_seq = seq; - if (si.state > 0) { - si.inc = ++pending_mdsmap.inc[info.rank]; - pending_mdsmap.up[info.rank] = sgid; + si.rank = info.rank; + si.inc = ++pending_mdsmap.inc[info.rank]; + pending_mdsmap.up[info.rank] = sgid; + if (si.state > 0) pending_mdsmap.last_failure = pending_mdsmap.epoch; - + if (si.state > 0 || + si.state == MDSMap::STATE_CREATING || + si.state == MDSMap::STATE_STARTING) { // blacklist laggy mds utime_t until = now; until += g_conf.mds_blacklist_interval;