set<int> 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<unsigned,unsigned>, entity_addr_t > foo;
for (map<entity_addr_t,mds_info_t>::iterator p = mds_info.begin();
out << "\n";
}
- if (failed.size())
- out << "failed " << failed << "\n";
- if (stopped.size())
- out << "stopped " << failed << "\n";
}
if (failed.size())
out << ", " << failed.size() << " failed";
+ if (stopped.size())
+ out << ", " << stopped.size() << " stopped";
}
<< 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;
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);