From 29c8c3fb861a7153a13e3f56aaa7772c9116c751 Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Tue, 10 Jan 2017 11:16:47 +0800 Subject: [PATCH] mds: finish clientreplay requests before requesting active state All clientreplay requests' finish contexts should be executed before MDCache::export_remaining_imported_caps(). Otherwise MDCache::try_reconnect_cap() may fail to reconnect client caps. Fixes: http://tracker.ceph.com/issues/18461 Signed-off-by: Yan, Zheng (cherry picked from commit 80dae314ee90e79d60e2cfee301e43a435c10801) --- src/mds/MDSRank.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mds/MDSRank.cc b/src/mds/MDSRank.cc index 7a51ed02ad0..8155b235b83 100644 --- a/src/mds/MDSRank.cc +++ b/src/mds/MDSRank.cc @@ -1253,7 +1253,7 @@ void MDSRank::clientreplay_start() bool MDSRank::queue_one_replay() { if (replay_queue.empty()) { - clientreplay_done(); + mdlog->wait_for_safe(new C_MDS_VoidFn(this, &MDSRank::clientreplay_done)); return false; } queue_waiter(replay_queue.front()); -- 2.47.3