From: Yan, Zheng Date: Thu, 12 Jul 2018 02:52:57 +0000 (+0800) Subject: mds: consider max age of dispatch queue when finding stale client X-Git-Tag: v12.2.9~99^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5bf63127a91020e5f04607bbaa3b2280c59aae1f;p=ceph.git mds: consider max age of dispatch queue when finding stale client session renew messages from clients can be in the dispatch queue, waiting for getting dispatched. Signed-off-by: "Yan, Zheng" (cherry picked from commit 2ca5708df6cdb4732e7ced3dcf37c966a09aa4d2) Conflicts: src/mds/Server.cc --- diff --git a/src/mds/MDSRank.cc b/src/mds/MDSRank.cc index 7f6f15b9a02b..4f60f0dc25c7 100644 --- a/src/mds/MDSRank.cc +++ b/src/mds/MDSRank.cc @@ -1020,6 +1020,11 @@ utime_t MDSRank::get_laggy_until() const return beacon.get_laggy_until(); } +double MDSRank::get_dispatch_queue_max_age(utime_t now) const +{ + return messenger->get_dispatch_queue_max_age(now); +} + bool MDSRank::is_daemon_stopping() const { return stopping; diff --git a/src/mds/MDSRank.h b/src/mds/MDSRank.h index e524f99174a7..0eb91896474e 100644 --- a/src/mds/MDSRank.h +++ b/src/mds/MDSRank.h @@ -359,6 +359,7 @@ class MDSRank { void damaged_unlocked(); utime_t get_laggy_until() const; + double get_dispatch_queue_max_age(utime_t now) const; void send_message_mds(Message *m, mds_rank_t mds); void forward_message_mds(Message *req, mds_rank_t mds); diff --git a/src/mds/Server.cc b/src/mds/Server.cc index fd48bea19188..3d0ee254b200 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -707,7 +707,10 @@ void Server::find_idle_sessions() // timeout/stale // (caps go stale, lease die) utime_t now = ceph_clock_now(); + double queue_max_age = mds->get_dispatch_queue_max_age(now); + utime_t cutoff = now; + cutoff -= queue_max_age; cutoff -= g_conf->mds_session_timeout; while (1) { Session *session = mds->sessionmap.get_oldest_session(Session::STATE_OPEN); @@ -729,6 +732,7 @@ void Server::find_idle_sessions() // autoclose cutoff = now; + cutoff -= queue_max_age; cutoff -= g_conf->mds_session_autoclose; // don't kick clients if we've been laggy