From cefb540413aeec9e00747fb1a1cec342ca26a322 Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Tue, 15 Dec 2020 12:07:14 -0500 Subject: [PATCH] rgw: BucketReshardManager stores BucketReshardShards by value Signed-off-by: Casey Bodley --- src/rgw/rgw_reshard.cc | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/src/rgw/rgw_reshard.cc b/src/rgw/rgw_reshard.cc index 638602ab3a33c..d556ee26d2bfa 100644 --- a/src/rgw/rgw_reshard.cc +++ b/src/rgw/rgw_reshard.cc @@ -187,27 +187,24 @@ class BucketReshardManager { rgw::sal::RadosStore* store; const RGWBucketInfo& target_bucket_info; deque completions; - int num_target_shards; - vector target_shards; + vector target_shards; public: BucketReshardManager(const DoutPrefixProvider *dpp, rgw::sal::RadosStore* _store, const RGWBucketInfo& _target_bucket_info, - int _num_target_shards) : - store(_store), target_bucket_info(_target_bucket_info), - num_target_shards(_num_target_shards) + int num_target_shards) + : store(_store), target_bucket_info(_target_bucket_info) { - - target_shards.resize(num_target_shards); + target_shards.reserve(num_target_shards); for (int i = 0; i < num_target_shards; ++i) { - target_shards[i] = new BucketReshardShard(dpp, store, target_bucket_info, i, completions); + target_shards.emplace_back(dpp, store, target_bucket_info, i, completions); } } ~BucketReshardManager() { for (auto& shard : target_shards) { - int ret = shard->wait_all_aio(); + int ret = shard.wait_all_aio(); if (ret < 0) { ldout(store->ctx(), 20) << __func__ << ": shard->wait_all_aio() returned ret=" << ret << dendl; @@ -218,8 +215,8 @@ public: int add_entry(int shard_index, rgw_cls_bi_entry& entry, bool account, RGWObjCategory category, const rgw_bucket_category_stats& entry_stats) { - int ret = target_shards[shard_index]->add_entry(entry, account, category, - entry_stats); + int ret = target_shards[shard_index].add_entry(entry, account, category, + entry_stats); if (ret < 0) { derr << "ERROR: target_shards.add_entry(" << entry.idx << ") returned error: " << cpp_strerror(-ret) << dendl; @@ -232,19 +229,18 @@ public: int finish() { int ret = 0; for (auto& shard : target_shards) { - int r = shard->flush(); + int r = shard.flush(); if (r < 0) { - derr << "ERROR: target_shards[" << shard->get_num_shard() << "].flush() returned error: " << cpp_strerror(-r) << dendl; + derr << "ERROR: target_shards[" << shard.get_num_shard() << "].flush() returned error: " << cpp_strerror(-r) << dendl; ret = r; } } for (auto& shard : target_shards) { - int r = shard->wait_all_aio(); + int r = shard.wait_all_aio(); if (r < 0) { - derr << "ERROR: target_shards[" << shard->get_num_shard() << "].wait_all_aio() returned error: " << cpp_strerror(-r) << dendl; + derr << "ERROR: target_shards[" << shard.get_num_shard() << "].wait_all_aio() returned error: " << cpp_strerror(-r) << dendl; ret = r; } - delete shard; } target_shards.clear(); return ret; -- 2.39.5