]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common/TrackedOp: fix osd reboot optracker coredump 51249/head
authoryaohui.zhou <yaohui.zhou@orcadt.com>
Wed, 22 Apr 2020 02:26:56 +0000 (10:26 +0800)
committerKonstantin Shalygin <k0ste@k0ste.ru>
Thu, 27 Apr 2023 09:10:51 +0000 (16:10 +0700)
Signed-off-by: yaohui.zhou <yaohui.zhou@orcadt.com>
(cherry picked from commit 496c3058c03e8595a01fd03c26714ccfd1e50f10)

src/common/TrackedOp.cc

index f1b35e7e57aa5080810778ecca6411176aa8b38b..ddb0f3fbfd2a95f1d921d9dc67cb8a095eabc6e8 100644 (file)
@@ -170,6 +170,14 @@ OpTracker::OpTracker(CephContext *cct_, bool tracking, uint32_t num_shards):
 
 OpTracker::~OpTracker() {
   while (!sharded_in_flight_list.empty()) {
+    ShardedTrackingData* sdata = sharded_in_flight_list.back();
+    ceph_assert(NULL != sdata);
+    while (!sdata->ops_in_flight_sharded.empty()) {
+      {
+        std::lock_guard locker(sdata->ops_in_flight_lock_sharded);
+        sdata->ops_in_flight_sharded.pop_back();
+      }
+    }
     ceph_assert((sharded_in_flight_list.back())->ops_in_flight_sharded.empty());
     delete sharded_in_flight_list.back();
     sharded_in_flight_list.pop_back();