dout(10) << "not sending PGRemove to down osd." << *p << dendl;
}
peer_info.erase(*p);
+ peer_purged.insert(*p);
removed = true;
}
state_clear(PG_STATE_RECOVERING);
peer_missing.clear();
+ peer_purged.clear();
// reset primary state?
if (oldrole == 0 || get_role() == 0)
dout(10) << "Active: got notify from " << notevt.from
<< ", already have info from that osd, ignoring"
<< dendl;
+ } else if (pg->peer_purged.count(notevt.from)) {
+ dout(10) << "Active: got notify from " << notevt.from
+ << ", already purged that peer, ignoring"
+ << dendl;
} else {
dout(10) << "Active: got notify from " << notevt.from
<< ", calling proc_replica_info and discover_all_missing"
set<int> stray_set; // non-acting osds that have PG data.
eversion_t oldest_update; // acting: lowest (valid) last_update in active set
map<int,pg_info_t> peer_info; // info from peers (stray or prior)
+ set<int> peer_purged; // peers purged
map<int,pg_missing_t> peer_missing;
set<int> peer_log_requested; // logs i've requested (and start stamps)
set<int> peer_missing_requested;