]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
client: auto reconnect using new entity addrs after blacklisted
authorYan, Zheng <zyan@redhat.com>
Mon, 8 Apr 2019 02:42:15 +0000 (10:42 +0800)
committerYan, Zheng <zyan@redhat.com>
Mon, 30 Mar 2020 02:24:47 +0000 (10:24 +0800)
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
src/client/Client.cc
src/client/Client.h
src/common/legacy_config_opts.h

index 6db2effdadd1b58117dd241be4bf91629b0cc6b6..eecc57ebb6810aadeaf5a997eab202d87ab54edd 100644 (file)
@@ -6258,6 +6258,15 @@ void Client::tick()
   }
 
   trim_cache(true);
+
+  if (blacklisted && mounted &&
+      last_auto_reconnect + 30 * 60 < now &&
+      cct->_conf.get_val<bool>("client_reconnect_stale")) {
+    messenger->client_reset();
+    blacklisted = false;
+    _kick_stale_sessions();
+    last_auto_reconnect = now;
+  }
 }
 
 void Client::renew_caps()
@@ -14069,8 +14078,7 @@ void Client::ms_handle_remote_reset(Connection *con)
        case MetaSession::STATE_OPEN:
          {
            objecter->maybe_request_map(); /* to check if we are blacklisted */
-           const auto& conf = cct->_conf;
-           if (conf->client_reconnect_stale) {
+           if (cct->_conf.get_val<bool>("client_reconnect_stale")) {
              ldout(cct, 1) << "reset from mds we were open; close mds session for reconnect" << dendl;
              _closed_mds_session(s);
            } else {
index 2dabfad00355e1b2375e7c9f3e098f78f63e38c6..52eda962b291eff92ab4f81978a1fd408aaba539 100644 (file)
@@ -1276,6 +1276,8 @@ private:
   ceph::unordered_map<inodeno_t,SnapRealm*> snap_realms;
   std::map<std::string, std::string> metadata;
 
+  utime_t last_auto_reconnect;
+
   // trace generation
   ofstream traceout;
 
index bee70445daadee514c1bd68b5689734d86d51fc9..bfbf4f293ffe40808e3714482a2386b84ebfb21d 100644 (file)
@@ -347,7 +347,6 @@ OPTION(client_trace, OPT_STR)
 OPTION(client_readahead_min, OPT_LONGLONG)  // readahead at _least_ this much.
 OPTION(client_readahead_max_bytes, OPT_LONGLONG)  // default unlimited
 OPTION(client_readahead_max_periods, OPT_LONGLONG)  // as multiple of file layout period (object size * num stripes)
-OPTION(client_reconnect_stale, OPT_BOOL)  // automatically reconnect stale session
 OPTION(client_snapdir, OPT_STR)
 OPTION(client_mount_uid, OPT_INT)
 OPTION(client_mount_gid, OPT_INT)