]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
RadosClient: shutdown monclient after dropping lock
authorSamuel Just <sam.just@inktank.com>
Thu, 8 Aug 2013 22:12:46 +0000 (15:12 -0700)
committerSage Weil <sage@inktank.com>
Mon, 19 Aug 2013 04:07:59 +0000 (21:07 -0700)
Otherwise, the monclient shutdown may deadlock waiting
on a context trying to take the RadosClient lock.

Fixes: #5897
Signed-off-by: Samuel Just <sam.just@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
(cherry picked from commit 0aacd10e2557c55021b5be72ddf39b9cea916be4)

src/librados/RadosClient.cc

index 5356fb65e6815f8cc51eecf195ddc2f29648c61e..b18447c67b02a9f7edb85c9ab303d4ff6c29bea8 100644 (file)
@@ -227,7 +227,6 @@ void librados::RadosClient::shutdown()
   if (state == CONNECTED) {
     finisher.stop();
   }
-  monclient.shutdown();
   bool need_objecter = false;
   if (objecter && state == CONNECTED) {
     need_objecter = true;
@@ -236,6 +235,7 @@ void librados::RadosClient::shutdown()
   state = DISCONNECTED;
   timer.shutdown();   // will drop+retake lock
   lock.Unlock();
+  monclient.shutdown();
   if (need_objecter)
     objecter->shutdown_unlocked();
   if (messenger) {