From f420fe4683c81ecd6928df3ae11259bccc6cb9d0 Mon Sep 17 00:00:00 2001 From: John Spray Date: Fri, 28 Aug 2015 14:23:30 +0100 Subject: [PATCH] mds: fix shutdown while in standby Fixes: #12776 Signed-off-by: John Spray --- src/mds/MDSDaemon.cc | 18 ++++++++++++++++++ src/mds/MDSRank.cc | 10 ---------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/mds/MDSDaemon.cc b/src/mds/MDSDaemon.cc index 0ab6473c98f0..7d23722792c5 100644 --- a/src/mds/MDSDaemon.cc +++ b/src/mds/MDSDaemon.cc @@ -993,10 +993,28 @@ void MDSDaemon::suicide() clean_up_admin_socket(); + // Inform MDS we are going away, then shut down beacon beacon.set_want_state(mdsmap, MDSMap::STATE_DNE); + if (!mdsmap->is_dne_gid(mds_gid_t(monc->get_global_id()))) { + // Notify the MDSMonitor that we're dying, so that it doesn't have to + // wait for us to go laggy. Only do this if we're actually in the + // MDSMap, because otherwise the MDSMonitor will drop our message. + beacon.send_and_wait(1); + } + beacon.shutdown(); + + timer.shutdown(); if (mds_rank) { mds_rank->shutdown(); + } else { + + if (objecter->initialized.read()) { + objecter->shutdown(); + } + + monc->shutdown(); + messenger->shutdown(); } } diff --git a/src/mds/MDSRank.cc b/src/mds/MDSRank.cc index 7f3ea2bd35a0..715bf832ec03 100644 --- a/src/mds/MDSRank.cc +++ b/src/mds/MDSRank.cc @@ -206,13 +206,6 @@ void MDSRankDispatcher::shutdown() dout(1) << __func__ << ": shutting down rank " << whoami << dendl; - if (!mdsmap->is_dne_gid(mds_gid_t(monc->get_global_id()))) { - // Notify the MDSMonitor that we're dying, so that it doesn't have to - // wait for us to go laggy. Only do this if we're actually in the - // MDSMap, because otherwise the MDSMonitor will drop our message. - beacon.send_and_wait(1); - } - timer.shutdown(); // MDLog has to shut down before the finisher, because some of its @@ -221,9 +214,6 @@ void MDSRankDispatcher::shutdown() finisher->stop(); // no flushing - // stop timers - beacon.shutdown(); - // shut down cache mdcache->shutdown(); -- 2.47.3