]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
mon/OSDMonitor: drop stale failure_info
authorKefu Chai <kchai@redhat.com>
Thu, 11 Mar 2021 13:13:13 +0000 (21:13 +0800)
committerKefu Chai <kchai@redhat.com>
Fri, 19 Mar 2021 16:04:32 +0000 (00:04 +0800)
commita124ee85b03e15f4ea371358008ecac65f9f4e50
treea3a58e852c8f25db43c2b8bf75eb859a9c1541f9
parent6e512b2f1e228eb808d6bff1e5c159c4d16667ef
mon/OSDMonitor: drop stale failure_info

failure_info keeps strong references of the MOSDFailure messages
sent by osd or peon monitors, whenever monitor starts to handle
an MOSDFailure message, it registers it in its OpTracker. and
the failure report messageis unregistered when monitor acks them
by either canceling them or replying the reporters with a new
osdmap marking the target osd down. but if this does not happen,
the failure reports just pile up in OpTracker. and monitor considers
them as slow ops. and they are reported as SLOW_OPS health warning.

in theory, it does not take long to mark an unresponsive osd down if
we have enough reporters. but there is chance, that a reporter fails
to cancel its report before it reboots, and the monitor also fails
to collect enough reports and mark the target osd down. so the
target osd never gets an osdmap marking it down, so it won't send
an alive message to monitor to fix this.

in this change, we check for the stale failure info in tick(), and
simply drop the stale reports. so the messages can released and
marked "done".

Fixes: https://tracker.ceph.com/issues/47380
Signed-off-by: Kefu Chai <kchai@redhat.com>
src/mon/OSDMonitor.cc
src/mon/OSDMonitor.h