From: Kefu Chai Date: Tue, 2 Jun 2015 04:55:06 +0000 (+0800) Subject: mon: send no_reply() to peon to drop ignored mdsbeacon X-Git-Tag: v9.0.2~21^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=72a37b3a8e145d8522ea67fc14ce2c5510b6852b;p=ceph.git mon: send no_reply() to peon to drop ignored mdsbeacon so the peon can remove the ignored mdsbeacon request from the routed_requets at seeing this reply, and hence no longer resend the request. Fixes: #11590 Signed-off-by: Kefu Chai --- diff --git a/src/mon/MDSMonitor.cc b/src/mon/MDSMonitor.cc index 3d00edd99c54..f368d1b4d5fb 100644 --- a/src/mon/MDSMonitor.cc +++ b/src/mon/MDSMonitor.cc @@ -291,7 +291,8 @@ bool MDSMonitor::preprocess_beacon(MMDSBeacon *m) if (state != MDSMap::STATE_BOOT) { dout(7) << "mds_beacon " << *m << " is not in mdsmap" << dendl; mon->send_reply(m, new MMDSMap(mon->monmap->fsid, &mdsmap)); - goto out; + m->put(); + return true; } else { return false; // not booted yet. } @@ -358,9 +359,12 @@ bool MDSMonitor::preprocess_beacon(MMDSBeacon *m) mon->send_reply(m, new MMDSBeacon(mon->monmap->fsid, m->get_global_id(), m->get_name(), mdsmap.get_epoch(), state, seq)); - - // done + m->put(); + return true; + out: + // I won't reply this beacon, drop it. + mon->no_reply(m); m->put(); return true; } diff --git a/src/mon/MDSMonitor.h b/src/mon/MDSMonitor.h index 88bf69a48fc7..220da972fc4f 100644 --- a/src/mon/MDSMonitor.h +++ b/src/mon/MDSMonitor.h @@ -58,10 +58,12 @@ class MDSMonitor : public PaxosService { void finish(int r) { if (r >= 0) mm->_updated(m); // success - else if (r == -ECANCELED) + else if (r == -ECANCELED) { + mm->mon->no_reply(m); m->put(); - else + } else { mm->dispatch((PaxosServiceMessage*)m); // try again + } } };