]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
osd: shutdown recovery_request_timer earlier
authorZengran Zhang <zhangzengran@sangfor.com.cn>
Wed, 27 Mar 2019 01:39:31 +0000 (09:39 +0800)
committerZengran Zhang <zhangzengran@sangfor.com.cn>
Wed, 27 Mar 2019 01:39:51 +0000 (09:39 +0800)
recovery_request_timer may hold some QueuePeeringEvts which PGRef,
if we dont shutdown it earlier, it potentially cause the PGRef leak
when kicking pg.

Fixes: https://tracker.ceph.com/issues/38945
Signed-off-by: Zengran Zhang <zhangzengran@sangfor.com.cn>
src/osd/OSD.cc

index 020fb437294e1b5cc1c612e5a6fcc33041581308..ded6e8c3baad1093c7871d494baeeafb41b97038 100644 (file)
@@ -443,6 +443,11 @@ void OSDService::start_shutdown()
     std::lock_guard l(sleep_lock);
     sleep_timer.shutdown();
   }
+
+  {
+    std::lock_guard l(recovery_request_lock);
+    recovery_request_timer.shutdown();
+  }
 }
 
 void OSDService::shutdown_reserver()
@@ -464,11 +469,6 @@ void OSDService::shutdown()
     f->stop();
   }
 
-  {
-    std::lock_guard l(recovery_request_lock);
-    recovery_request_timer.shutdown();
-  }
-
   osdmap = OSDMapRef();
   next_osdmap = OSDMapRef();
 }