} else if (pending_map.active_gid == 0) {
// There is no currently active daemon, select this one.
if (pending_map.standbys.count(m->get_gid())) {
- drop_standby(m->get_gid());
+ drop_standby(m->get_gid(), false);
}
dout(4) << "selecting new active " << m->get_gid()
<< " " << m->get_name()
pending_map.available = false;
pending_map.active_addr = entity_addr_t();
- drop_standby(replacement_gid);
+ drop_standby(replacement_gid, false);
+
return true;
} else {
return false;
cancel_timer();
}
-void MgrMonitor::drop_standby(uint64_t gid)
+void MgrMonitor::drop_standby(uint64_t gid, bool drop_meta)
{
- pending_metadata_rm.insert(pending_map.standbys[gid].name);
- pending_metadata.erase(pending_map.standbys[gid].name);
+ if (drop_meta) {
+ pending_metadata_rm.insert(pending_map.standbys[gid].name);
+ pending_metadata.erase(pending_map.standbys[gid].name);
+ }
pending_map.standbys.erase(gid);
if (last_beacon.count(gid) > 0) {
last_beacon.erase(gid);