]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librados: only call watch_flush if necessary
authorHaomai Wang <haomaiwang@gmail.com>
Tue, 23 Dec 2014 10:38:24 +0000 (18:38 +0800)
committerSage Weil <sage@redhat.com>
Tue, 23 Dec 2014 22:24:27 +0000 (14:24 -0800)
Fix bug #10424
Signed-off-by: Haomai Wang <haomaiwang@gmail.com>
(cherry picked from commit 926a1b7468550e0c83bfa68bd45df1a6af599727)

src/librados/RadosClient.cc

index a5b89a07960bb8be21e67ca120870d0c2a100c8b..a0b4f23441faa9596c42c2b455c912cf1a3af3ab 100644 (file)
@@ -282,9 +282,6 @@ int librados::RadosClient::connect()
 
 void librados::RadosClient::shutdown()
 {
-  // make sure watch callbacks are flushed
-  watch_flush();
-
   lock.Lock();
   if (state == DISCONNECTED) {
     lock.Unlock();
@@ -301,8 +298,11 @@ void librados::RadosClient::shutdown()
   instance_id = 0;
   timer.shutdown();   // will drop+retake lock
   lock.Unlock();
-  if (need_objecter)
+  if (need_objecter) {
+    // make sure watch callbacks are flushed
+    watch_flush();
     objecter->shutdown();
+  }
   monclient.shutdown();
   if (messenger) {
     messenger->shutdown();