From: John Spray Date: Fri, 28 Aug 2015 13:23:30 +0000 (+0100) Subject: mds: fix shutdown while in standby X-Git-Tag: v9.1.0~230^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f420fe4683c81ecd6928df3ae11259bccc6cb9d0;p=ceph.git mds: fix shutdown while in standby Fixes: #12776 Signed-off-by: John Spray --- 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();