From b0414ea261e05c25f88e8677652dfa1c2862e48b Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Wed, 12 Dec 2018 19:49:40 +0800 Subject: [PATCH] mds: use mono_clock for reconnect timeout Signed-off-by: "Yan, Zheng" (cherry picked from commit 4982693fcfb722bc8256058f414ca9a0c7b397b0) Conflicts: src/mds/Server.cc src/mds/Server.h --- src/mds/Server.cc | 10 ++++------ src/mds/Server.h | 4 ++-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 3669f538780..88a163df946 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -941,7 +941,7 @@ void Server::reconnect_clients(MDSInternalContext *reconnect_done_) // clients will get the mdsmap and discover we're reconnecting via the monitor. - reconnect_start = ceph_clock_now(); + reconnect_start = clock::now(); dout(1) << "reconnect_clients -- " << client_reconnect_gather.size() << " sessions" << dendl; mds->sessionmap.dump(); } @@ -960,8 +960,7 @@ void Server::handle_client_reconnect(MClientReconnect *m) return; } - utime_t delay = ceph_clock_now(); - delay -= reconnect_start; + auto delay = std::chrono::duration(clock::now() - reconnect_start).count(); dout(10) << " reconnect_start " << reconnect_start << " delay " << delay << dendl; bool deny = false; @@ -1081,9 +1080,8 @@ void Server::reconnect_tick() return; } - utime_t reconnect_end = reconnect_start; - reconnect_end += g_conf->mds_reconnect_timeout; - if (ceph_clock_now() >= reconnect_end && + auto elapse = std::chrono::duration(clock::now() - reconnect_start).count(); + if (elapse >= g_conf()->mds_reconnect_timeout && !client_reconnect_gather.empty()) { dout(10) << "reconnect timed out" << dendl; diff --git a/src/mds/Server.h b/src/mds/Server.h index 97402c2fb9f..e369eb2bfff 100644 --- a/src/mds/Server.h +++ b/src/mds/Server.h @@ -89,6 +89,8 @@ private: int failed_reconnects; bool reconnect_evicting; // true if I am waiting for evictions to complete // before proceeding to reconnect_gather_finish + time reconnect_start = time::min(); + set client_reconnect_gather; // clients i need a reconnect msg from. double cap_revoke_eviction_timeout = 0; @@ -114,8 +116,6 @@ public: void handle_osd_map(); // -- sessions and recovery -- - utime_t reconnect_start; - set client_reconnect_gather; // clients i need a reconnect msg from. bool waiting_for_reconnect(client_t c) const; void dump_reconnect_status(Formatter *f) const; -- 2.47.3