From c8dc03561cf5a8f373601a0912f2072a3b3f8da0 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sat, 4 Apr 2009 14:18:47 -0700 Subject: [PATCH] mon: fix mds stopping and restart Remove stopped mds from last_beacon (monitoring) set. Fix mdsmap dump output to include stopping set. Remove mds from stopped set on start. --- src/mds/MDSMap.cc | 12 ++++++------ src/mon/MDSMonitor.cc | 10 ++++++---- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/mds/MDSMap.cc b/src/mds/MDSMap.cc index 4ffa030ea4b7c..aefbfe4a718d2 100644 --- a/src/mds/MDSMap.cc +++ b/src/mds/MDSMap.cc @@ -33,8 +33,10 @@ void MDSMap::print(ostream& out) set upset; get_up_mds_set(upset); - out << "in " << in << "\n" - << "up " << upset << "\n"; + out << "in <" << in << ">\n" + << "up <" << upset << ">\n" + << "failed <" << failed << ">\n" + << "stopped <" << stopped << ">\n"; multimap< pair, entity_addr_t > foo; for (map::iterator p = mds_info.begin(); @@ -67,10 +69,6 @@ void MDSMap::print(ostream& out) out << "\n"; } - if (failed.size()) - out << "failed " << failed << "\n"; - if (stopped.size()) - out << "stopped " << failed << "\n"; } @@ -94,4 +92,6 @@ void MDSMap::print_summary(ostream& out) if (failed.size()) out << ", " << failed.size() << " failed"; + if (stopped.size()) + out << ", " << stopped.size() << " stopped"; } diff --git a/src/mon/MDSMonitor.cc b/src/mon/MDSMonitor.cc index 9cd2a21b7a219..472ecbcd21d9e 100644 --- a/src/mon/MDSMonitor.cc +++ b/src/mon/MDSMonitor.cc @@ -304,9 +304,10 @@ bool MDSMonitor::prepare_beacon(MMDSBeacon *m) << dendl; if (state == MDSMap::STATE_STOPPED) { pending_mdsmap.up.erase(info.rank); - pending_mdsmap.mds_info.erase(addr); - pending_mdsmap.stopped.insert(info.rank); pending_mdsmap.in.erase(info.rank); + pending_mdsmap.stopped.insert(info.rank); + pending_mdsmap.mds_info.erase(addr); // last! info is a ref into this map + last_beacon.erase(addr); } else { info.state = state; info.state_seq = seq; @@ -544,9 +545,10 @@ void MDSMonitor::tick() MDSMap::mds_info_t& info = pending_mdsmap.mds_info[addr]; info.rank = mds; - if (pending_mdsmap.stopped.count(mds)) + if (pending_mdsmap.stopped.count(mds)) { info.state = MDSMap::STATE_STARTING; - else + pending_mdsmap.stopped.erase(mds); + } else info.state = MDSMap::STATE_CREATING; info.inc = ++pending_mdsmap.inc[mds]; pending_mdsmap.in.insert(mds); -- 2.39.5