]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
mds: do not defer incoming mgrmap when mds is laggy
authorVenky Shankar <vshankar@redhat.com>
Wed, 18 Mar 2020 07:25:47 +0000 (03:25 -0400)
committerVenky Shankar <vshankar@redhat.com>
Wed, 18 Mar 2020 12:50:46 +0000 (08:50 -0400)
commitbeb12fa25315153e1a06a0104883de89776438a6
tree0c64295c5951c50716649b8c8ccf76a74867a82d
parentd7753e3a02069cdfe99970558b6351a73efcf16b
mds: do not defer incoming mgrmap when mds is laggy

When the mds is laggy, the incoming mgrmap is queued to be processed
at a later stage. But, the mds does not handle mgrmap message directly.
So, later when the mds is not laggy anymore, the mgrmap message is not
handled and is dropped. But, when the mgrmap message was queued up, the
mds acknowledges that it has handled the message. This causes the mgr
client instance to never process the mgrmap and never connecting to the
manager (the receipt of mgrmap drives the connection to the manager).

The fix is to not acknowledge messages that the mds cannot handle. In
normal cases, the mds does not ack the message but when it's laggy, it
just blindly queues up the message -- so, check if the message can be
handled (later) even when the mds is laggy.

Also, a minor change in a function name -- handle_deferrable_message()
is kind of a misnomer since the function is called to process messages
that are not deferred. That's changed to handle_message() now.

Fixes: http://tracker.ceph.com/issues/44638
Signed-off-by: Venky Shankar <vshankar@redhat.com>
src/mds/MDSDaemon.cc
src/mds/MDSRank.cc
src/mds/MDSRank.h