From 8b9edf527d6d299e4db6845ffa9352dd77d06006 Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Mon, 2 Apr 2018 11:23:08 +0800 Subject: [PATCH] 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" --- src/mds/Server.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mds/Server.cc b/src/mds/Server.cc index d2c29d8ebd0..61fef0229ea 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()) -- 2.47.3