From: Yan, Zheng Date: Mon, 8 Apr 2019 02:42:15 +0000 (+0800) Subject: client: auto reconnect using new entity addrs after blacklisted X-Git-Tag: v15.2.5~24^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=563f34aeffd5ececabb0269bbddde8e6eab01952;p=ceph.git client: auto reconnect using new entity addrs after blacklisted Signed-off-by: "Yan, Zheng" (cherry picked from commit 27da39ae5dfa18a323f6e544ead598bbb64fc774) --- diff --git a/src/client/Client.cc b/src/client/Client.cc index c28ac4b504a..b638fb7fd78 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -6321,6 +6321,15 @@ void Client::tick() } trim_cache(true); + + if (blacklisted && mounted && + last_auto_reconnect + 30 * 60 < now && + cct->_conf.get_val("client_reconnect_stale")) { + messenger->client_reset(); + blacklisted = false; + _kick_stale_sessions(); + last_auto_reconnect = now; + } } void Client::renew_caps() @@ -14122,8 +14131,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("client_reconnect_stale")) { ldout(cct, 1) << "reset from mds we were open; close mds session for reconnect" << dendl; _closed_mds_session(s); } else { diff --git a/src/client/Client.h b/src/client/Client.h index 7ca604200eb..b4393039f26 100644 --- a/src/client/Client.h +++ b/src/client/Client.h @@ -1264,6 +1264,8 @@ private: ceph::unordered_map snap_realms; std::map metadata; + utime_t last_auto_reconnect; + // trace generation ofstream traceout; diff --git a/src/common/legacy_config_opts.h b/src/common/legacy_config_opts.h index b0562247dda..847991b3cff 100644 --- a/src/common/legacy_config_opts.h +++ b/src/common/legacy_config_opts.h @@ -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)