}
// did someone fail?
- if (true) {
- // new failed?
- set<mds_rank_t> oldfailed, failed;
- oldmap->get_failed_mds_set(oldfailed);
- mdsmap->get_failed_mds_set(failed);
- for (set<mds_rank_t>::iterator p = failed.begin(); p != failed.end(); ++p)
- if (oldfailed.count(*p) == 0) {
- messenger->mark_down(oldmap->get_inst(*p).addr);
- handle_mds_failure(*p);
+ // new down?
+ {
+ set<mds_rank_t> olddown, down;
+ 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) {
+ messenger->mark_down(oldmap->get_inst(*p).addr);
+ handle_mds_failure(*p);
}
-
- // or down then up?
- // did their addr/inst change?
+ }
+ }
+
+ // did someone fail?
+ // did their addr/inst change?
+ {
set<mds_rank_t> up;
mdsmap->get_up_mds_set(up);
- for (set<mds_rank_t>::iterator p = up.begin(); p != up.end(); ++p)
+ for (set<mds_rank_t>::iterator p = up.begin(); p != up.end(); ++p) {
if (oldmap->have_inst(*p) &&
- oldmap->get_inst(*p) != mdsmap->get_inst(*p)) {
- messenger->mark_down(oldmap->get_inst(*p).addr);
- handle_mds_failure(*p);
+ oldmap->get_inst(*p) != mdsmap->get_inst(*p)) {
+ messenger->mark_down(oldmap->get_inst(*p).addr);
+ handle_mds_failure(*p);
}
+ }
}
+
if (is_clientreplay() || is_active() || is_stopping()) {
// did anyone stop?
set<mds_rank_t> oldstopped, stopped;