From: Wei Qiaomiao Date: Fri, 14 Aug 2020 17:37:56 +0000 (+0800) Subject: mds: standy-replay mds remained in the "resolve" state after restart the active mds X-Git-Tag: v15.2.9~122^2~11^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=74114e205d60e0987c4bd953e743c59957015ec4;p=ceph.git mds: standy-replay mds remained in the "resolve" state after restart the active mds In multimds and standy-replay enabled Ceph cluster,after reduce a filesystem mds num and restart an active mds, its standy-replay mds didn't enter into active state and remained in the "resolve" state. Fixes: https://tracker.ceph.com/issues/46976 Signed-off-by: Wei Qiaomiao (cherry picked from commit a786d2543cddcd1e4fbb7a574b76c3a30ddbf512) --- diff --git a/src/mds/MDSRank.cc b/src/mds/MDSRank.cc index e7ebee467e7..7144fd2be50 100644 --- a/src/mds/MDSRank.cc +++ b/src/mds/MDSRank.cc @@ -1690,8 +1690,6 @@ void MDSRank::replay_start() if (is_standby_replay()) standby_replaying = true; - calc_recovery_set(); - // Check if we need to wait for a newer OSD map before starting Context *fin = new C_IO_Wrapper(this, new C_MDS_BootStart(this, MDS_BOOT_INITIAL)); bool const ready = objecter->wait_for_map( @@ -1860,6 +1858,8 @@ void MDSRank::resolve_start() reopen_log(); + calc_recovery_set(); + mdcache->resolve_start(new C_MDS_VoidFn(this, &MDSRank::resolve_done)); finish_contexts(g_ceph_context, waiting_for_resolve); }