From: Yan, Zheng Date: Fri, 20 Apr 2018 10:04:09 +0000 (+0800) Subject: mds: don't add blacklisted clients to reconnect gather set X-Git-Tag: v13.1.0~50^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=857e3edac5eec82f1d04caec440d3d6e61bbf679;p=ceph.git mds: don't add blacklisted clients to reconnect gather set Signed-off-by: "Yan, Zheng" --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index e0253cf30ef3..73d09aa9e847 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -866,7 +866,13 @@ void Server::journal_close_session(Session *session, int state, Context *on_safe void Server::reconnect_clients(MDSInternalContext *reconnect_done_) { reconnect_done = reconnect_done_; - mds->sessionmap.get_client_set(client_reconnect_gather); + + set sessions; + mds->sessionmap.get_client_session_set(sessions); + for (auto session : sessions) { + if (session->is_open()) + client_reconnect_gather.insert(session->get_client()); + } if (client_reconnect_gather.empty()) { dout(7) << "reconnect_clients -- no sessions, doing nothing." << dendl; @@ -908,7 +914,7 @@ void Server::handle_client_reconnect(MClientReconnect *m) << ") from " << m->get_source_inst() << " after " << delay << " (allowed interval " << g_conf->mds_reconnect_timeout << ")"; deny = true; - } else if (session->is_closed()) { + } else if (!session->is_open()) { dout(1) << " session is closed, ignoring reconnect, sending close" << dendl; mds->clog->info() << "denied reconnect attempt (mds is " << ceph_mds_state_name(mds->get_state()) diff --git a/src/mds/SessionMap.h b/src/mds/SessionMap.h index 49b4ef74d454..499b171eecc8 100644 --- a/src/mds/SessionMap.h +++ b/src/mds/SessionMap.h @@ -542,13 +542,6 @@ public: void dump(); - void get_client_set(set& s) { - for (ceph::unordered_map::iterator p = session_map.begin(); - p != session_map.end(); - ++p) - if (p->second->info.inst.name.is_client()) - s.insert(p->second->get_client()); - } void get_client_session_set(set& s) const { for (ceph::unordered_map::const_iterator p = session_map.begin(); p != session_map.end();