]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: fix shutting down mds timed-out due to deadlock 9884/head
authorZhi Zhang <willzzhang@tencent.com>
Mon, 27 Jun 2016 05:00:26 +0000 (13:00 +0800)
committerZhi Zhang <willzzhang@tencent.com>
Mon, 27 Jun 2016 05:00:26 +0000 (13:00 +0800)
Signed-off-by: Zhi Zhang <zhangz.david@outlook.com>
src/mds/MDSRank.cc

index 16a93485b2b437d0facf3d06d19c6e13089dd4bf..41b93ad228723d41808cd614349f80910e66eb87 100644 (file)
@@ -238,7 +238,11 @@ void MDSRankDispatcher::shutdown()
   progress_thread.shutdown();
 
   // shut down messenger
+  // release mds_lock first because messenger thread might call 
+  // MDSDaemon::ms_handle_reset which will try to hold mds_lock
+  mds_lock.Unlock();
   messenger->shutdown();
+  mds_lock.Lock();
 
   // Workaround unclean shutdown: HeartbeatMap will assert if
   // worker is not removed (as we do in ~MDS), but ~MDS is not