From: yaohui.zhou Date: Wed, 22 Apr 2020 02:26:56 +0000 (+0800) Subject: common/TrackedOp: fix osd reboot optracker coredump X-Git-Tag: v17.1.0~775^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=496c3058c03e8595a01fd03c26714ccfd1e50f10;p=ceph.git common/TrackedOp: fix osd reboot optracker coredump Signed-off-by: yaohui.zhou --- diff --git a/src/common/TrackedOp.cc b/src/common/TrackedOp.cc index f1b35e7e57aa..ddb0f3fbfd2a 100644 --- a/src/common/TrackedOp.cc +++ b/src/common/TrackedOp.cc @@ -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();