return;
}
- mds_load.clear();
- if (mds->get_nodeid() == 0)
+ if (mds->get_nodeid() == 0) {
beat_epoch++;
+
+ mds_load.clear();
+ }
// my load
mds_load_t load = get_load(now);
goto out;
}
+ if (mds->get_nodeid() != 0 && m->get_beat() > beat_epoch) {
+ dout(10) << "receive next epoch " << m->get_beat() << " from mds." << who << " before mds0" << dendl;
+
+ beat_epoch = m->get_beat();
+ // clear the mds load info whose epoch is less than beat_epoch
+ mds_load.clear();
+ }
+
if (who == 0) {
- dout(20) << " from mds0, new epoch" << dendl;
+ dout(20) << " from mds0, new epoch " << m->get_beat() << dendl;
+ if (beat_epoch != m->get_beat()) {
+ mds_load.clear();
+ }
beat_epoch = m->get_beat();
send_heartbeat();
<< " : " << cpp_strerror(r);
}
prep_rebalance(m->get_beat());
+
+ mds_load.clear();
}
}