From 44dd1f238238a2b5637a02527faeba102c0c3b10 Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Wed, 19 Jun 2019 14:39:55 +0800 Subject: [PATCH] mds: check last laggy before marking unresponsive client stale Current mds may evict unresponsive client without going through session stale. So we need to adjust the last laggy check. Signed-off-by: "Yan, Zheng" (cherry picked from commit e5cc6f52feb64fa1c7ba1ee2b304cd6588f16e7a) --- src/mds/Server.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 9927f4e8414..c8ab1eda9ad 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -932,10 +932,17 @@ void Server::find_idle_sessions() // (caps go stale, lease die) double queue_max_age = mds->get_dispatch_queue_max_age(ceph_clock_now()); double cutoff = queue_max_age + mds->mdsmap->get_session_timeout(); - bool defer_session_stale = g_conf().get_val("mds_defer_session_stale"); + + // don't kick clients if we've been laggy + if (last_cleared_laggy < cutoff) { + dout(10) << " last cleared laggy " << last_cleared_laggy << "s ago (< cutoff " << cutoff + << "), not marking any client stale" << dendl; + return; + } std::vector to_evict; + bool defer_session_stale = g_conf().get_val("mds_defer_session_stale"); const auto sessions_p1 = mds->sessionmap.by_state.find(Session::STATE_OPEN); if (sessions_p1 != mds->sessionmap.by_state.end() && !sessions_p1->second->empty()) { std::vector new_stale; @@ -1014,13 +1021,6 @@ void Server::find_idle_sessions() // autoclose cutoff = queue_max_age + mds->mdsmap->get_session_autoclose(); - // don't kick clients if we've been laggy - if (last_cleared_laggy < cutoff) { - dout(10) << " last cleared laggy " << last_cleared_laggy << "s ago (< cutoff " << cutoff - << "), not kicking any clients to be safe" << dendl; - return; - } - // Collect a list of sessions exceeding the autoclose threshold const auto sessions_p2 = mds->sessionmap.by_state.find(Session::STATE_STALE); if (sessions_p2 != mds->sessionmap.by_state.end() && !sessions_p2->second->empty()) { -- 2.47.3