From: Yan, Zheng Date: Thu, 2 Aug 2018 02:05:12 +0000 (+0800) Subject: mds: update MDSRank::cluster_degraded before handling mds failure X-Git-Tag: v13.2.2~74^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F23180%2Fhead;p=ceph.git mds: update MDSRank::cluster_degraded before handling mds failure Migrator checks MDSRank::is_cluster_degraded() to decide if it needs to send message to other mds. MDSRank::cluster_degraded should get updated before calling Migrator::handle_mds_failure_or_stop(). Introduced by commit 7de9da4a "mds: handle discontinuous mdsmap" Signed-off-by: "Yan, Zheng" (cherry picked from commit 93458c7306c3822175ed3c048f0937af8f02c341) --- diff --git a/src/mds/MDSRank.cc b/src/mds/MDSRank.cc index 4d473a7d6801..f44ec1d126e7 100644 --- a/src/mds/MDSRank.cc +++ b/src/mds/MDSRank.cc @@ -1738,6 +1738,8 @@ void MDSRankDispatcher::handle_mds_map( if (g_conf->mds_dump_cache_on_map) mdcache->dump_cache(); + cluster_degraded = mdsmap->is_degraded(); + // mdsmap and oldmap can be discontinuous. failover might happen in the missing mdsmap. // the 'restart' set tracks ranks that have restarted since the old mdsmap set restart; @@ -1896,7 +1898,6 @@ void MDSRankDispatcher::handle_mds_map( } } - cluster_degraded = mdsmap->is_degraded(); if (oldmap->is_degraded() && !cluster_degraded && state >= MDSMap::STATE_ACTIVE) { dout(1) << "cluster recovered." << dendl; auto it = waiting_for_active_peer.find(MDS_RANK_NONE);