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: v12.2.6~82^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=affc230bd62c611e3feb819631dad6d3be343021;p=ceph.git mds: don't add blacklisted clients to reconnect gather set Signed-off-by: "Yan, Zheng" (cherry picked from commit 857e3edac5eec82f1d04caec440d3d6e61bbf679) Conflicts: src/mds/SessionMap.h: Removed get_client_set --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 5132ece9e57..5a4c89e4658 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -863,7 +863,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; @@ -905,7 +911,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 a6c3cf6bfac..499b171eecc 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->info.inst.name.num()); - } void get_client_session_set(set& s) const { for (ceph::unordered_map::const_iterator p = session_map.begin(); p != session_map.end();