mon/MDSMonitor: send reply to beacons with state=DNE#60327
Conversation
| auto beacon = make_message<MMDSBeacon>(mon.monmap->fsid, | ||
| m->get_global_id(), m->get_name(), get_fsmap().get_epoch(), | ||
| m->get_state(), m->get_seq(), CEPH_FEATURES_SUPPORTED_DEFAULT); | ||
| mon.send_reply(op, beacon.detach()); |
There was a problem hiding this comment.
Are you sure you don't want this backported? I think it makes sense to. (In which case, please make a tracker ticket...)
There was a problem hiding this comment.
I havn't decided about this - I don't know how Ceph does this, and I can't decide what should be backported. All the PRs I submit here are forward-ported from my Reef branch; we're using Reef (to be updated to Squid), but never main. My optimizations will be pushed to our production clusters soon. Most of my optimizations probably will never be backported anyway, so for my work, it doesn't make a difference; I have to maintain a fork anyway, no matter how much you approve for merging or how much of that you backport afterwards.
During shutdown, the MDS sends a `MSG_MDS_BEACON` with `MDSMap::STATE_DNE` (in `MDSDaemon::suicide()`) and then waits for a `MSG_MDS_BEACON` reply from the MON. The MON, however, suppresses replies to `STATE_DNE`; in `MDSMonitor::preprocess_beacon()`, it returns early on `STATE_DNE` and `MDSMonitor::prepare_beacon()` silently evicts the dying MDS without any reply. This delays the MDS shutdown until the MDS times out. Since `MDSDaemon::suicide()` has code to wait for a beacon reply, I figure that the MON reply was suppressed accidently, therefore I suggest adding it. Fixes: https://tracker.ceph.com/issues/68761 Signed-off-by: Max Kellermann <max.kellermann@ionos.com>
01c35df to
fd9c404
Compare
|
This PR is under test in https://tracker.ceph.com/issues/68859. |
During shutdown, the MDS sends a
MSG_MDS_BEACONwithMDSMap::STATE_DNE(inMDSDaemon::suicide()) and then waits for aMSG_MDS_BEACONreply from the MON.The MON, however, suppresses replies to
STATE_DNE; inMDSMonitor::preprocess_beacon(), it returns early onSTATE_DNEandMDSMonitor::prepare_beacon()silently evicts the dying MDS without any reply.This delays the MDS shutdown until the MDS times out.
Since
MDSDaemon::suicide()has code to wait for a beacon reply, I figure that the MON reply was suppressed accidently, therefore I suggest adding it.This used to be part of #60320
Checklist