This avoids an assertion failure where an MDS receives an mdsmap that
causes it to enter up:replay and also see another MDS go down.
Fixes: http://tracker.ceph.com/issues/17670
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
oldmap->get_down_mds_set(&olddown);
mdsmap->get_down_mds_set(&down);
for (set<mds_rank_t>::iterator p = down.begin(); p != down.end(); ++p) {
- if (olddown.count(*p) == 0) {
+ if (oldmap->have_inst(*p) && olddown.count(*p) == 0) {
messenger->mark_down(oldmap->get_inst(*p).addr);
handle_mds_failure(*p);
}