From aea485a2c153f7f29f80084cb01a6088cf7dbcb9 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 29 Sep 2008 13:30:35 -0700 Subject: [PATCH] mds: choose new mon only if beacons are delayed, and switch to mon that sends up beacons This streamlines the mds <-> mon beacon interaction a bit. --- src/mds/MDS.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc index 797b0e545f1ca..1413ef59f1f8e 100644 --- a/src/mds/MDS.cc +++ b/src/mds/MDS.cc @@ -431,9 +431,11 @@ void MDS::beacon_send() << " (currently " << MDSMap::get_state_name(state) << ")" << dendl; + // pick new random mon if we have any outstanding beacons... + int mon = monmap->pick_mon(beacon_seq_stamp.size()); + beacon_seq_stamp[beacon_last_seq] = g_clock.now(); - int mon = monmap->pick_mon(); messenger->send_message(new MMDSBeacon(monmap->fsid, mdsmap->get_epoch(), want_state, beacon_last_seq, want_rank), monmap->get_inst(mon)); @@ -449,7 +451,10 @@ void MDS::handle_mds_beacon(MMDSBeacon *m) dout(10) << "handle_mds_beacon " << MDSMap::get_state_name(m->get_state()) << " seq " << m->get_seq() << dendl; version_t seq = m->get_seq(); - + + // make note of which mon + monmap->last_mon = m->get_source().num(); + // update lab if (beacon_seq_stamp.count(seq)) { assert(beacon_seq_stamp[seq] > beacon_last_acked_stamp); -- 2.39.5