From: Samuel Just Date: Thu, 8 Aug 2013 22:12:46 +0000 (-0700) Subject: RadosClient: shutdown monclient after dropping lock X-Git-Tag: v0.61.8~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=21a6e2479133a3debb9ab9057ff9fae70c9eede9;p=ceph.git RadosClient: shutdown monclient after dropping lock Otherwise, the monclient shutdown may deadlock waiting on a context trying to take the RadosClient lock. Fixes: #5897 Signed-off-by: Samuel Just Reviewed-by: Sage Weil (cherry picked from commit 0aacd10e2557c55021b5be72ddf39b9cea916be4) --- diff --git a/src/librados/RadosClient.cc b/src/librados/RadosClient.cc index 5356fb65e68..b18447c67b0 100644 --- a/src/librados/RadosClient.cc +++ b/src/librados/RadosClient.cc @@ -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) {