From: Yan, Zheng Date: Mon, 2 Apr 2018 03:23:08 +0000 (+0800) Subject: mds: handle client requests while mds is stopping X-Git-Tag: v13.1.0~358^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8b9edf527d6d299e4db6845ffa9352dd77d06006;p=ceph.git mds: handle client requests while mds is stopping stopping mds may require several minutes. It's not good to block client requests so long. mds should get less and less of client requesets as subtrees get exported. Signed-off-by: "Yan, Zheng" --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index d2c29d8ebd08..61fef0229ea3 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -239,8 +239,7 @@ void Server::dispatch(Message *m) bool wait_for_active = true; if (mds->is_stopping()) { - if (m->get_source().is_mds()) - wait_for_active = false; + wait_for_active = false; } else if (mds->is_clientreplay()) { if (req->is_queued_for_replay()) { wait_for_active = false; @@ -336,7 +335,8 @@ void Server::handle_client_session(MClientSession *m) if (session->is_opening() || session->is_open() || session->is_stale() || - session->is_killing()) { + session->is_killing() || + terminating_sessions) { dout(10) << "currently open|opening|stale|killing, dropping this req" << dendl; // set client metadata for session opened by prepare_force_open_sessions if (!m->client_meta.empty())