From: Yan, Zheng Date: Wed, 12 Dec 2018 11:49:40 +0000 (+0800) Subject: mds: use mono_clock for reconnect timeout X-Git-Tag: v12.2.11~36^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b0414ea261e05c25f88e8677652dfa1c2862e48b;p=ceph.git 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 --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 3669f538780f..88a163df946f 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 97402c2fb9fa..e369eb2bfffe 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;