Greg points out that we could have a situation like:
- mon recovers..
- goes through osdmaps, notes an osd was removed and removes from
full/nearfull
- goes through pgmaps, and re-adds it when it encounters some osd_stat_ts.
Fix this by removing the osd from the full/nearfull set when we remove
the osd_stat_t from the pgmap. Any osd removal is always followed by
an osd_stat_rm[] record when the primary processes the new osdmap and
proposed the appropriate pgmap updates.
Signed-off-by: Sage Weil <sage@inktank.com>
stat_osd_sub(t->second);
osd_stat.erase(t);
}
+
+ // remove these old osds from full/nearfull set(s), too
+ nearfull_osds.erase(*p);
+ full_osds.erase(*p);
}
if (inc.osdmap_epoch)