From 126ba3c4198ee44e310c7636f0dc203709645507 Mon Sep 17 00:00:00 2001 From: Shilpa Jagannath Date: Wed, 18 Dec 2024 14:59:07 -0500 Subject: [PATCH] rgw/trim: restore update_mapping_update in RGWBucketInstanceMetadataHandler::remove - fix testcase Signed-off-by: Shilpa Jagannath --- PendingReleaseNotes | 1 - src/rgw/driver/rados/rgw_bucket.cc | 19 ++++++++++++++++--- src/rgw/driver/rados/rgw_cr_rados.h | 2 -- src/test/rgw/rgw_multi/tests.py | 2 ++ 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/PendingReleaseNotes b/PendingReleaseNotes index 64688e8630d..4edafcc49a4 100644 --- a/PendingReleaseNotes +++ b/PendingReleaseNotes @@ -139,7 +139,6 @@ * RGW: deleted buckets are automatically cleaned up as part of trimming process. DeleteBucket will start returning 409 BucketNotEmpty errors until empty on all zones when sync policy is enabled. - `radosgw-admin bucket list-deleted` lists such buckets. * RADOS: A performance botteneck in the balancer mgr module has been fixed. Related Tracker: https://tracker.ceph.com/issues/68657 diff --git a/src/rgw/driver/rados/rgw_bucket.cc b/src/rgw/driver/rados/rgw_bucket.cc index 743187bb79e..45545a10472 100644 --- a/src/rgw/driver/rados/rgw_bucket.cc +++ b/src/rgw/driver/rados/rgw_bucket.cc @@ -2887,8 +2887,7 @@ int RGWBucketInstanceMetadataHandler::put_prepare( ldpp_dout(dpp, 10) << "store log layout type: " << bci.info.layout.logs.back().layout.type << dendl; for (int i = 0; i < shards_num; ++i) { ldpp_dout(dpp, 10) << "adding to data_log shard_id: " << i << " of gen:" << index_log.gen << dendl; - int ret = svc_datalog->add_entry(dpp, bci.info, index_log, i, - null_yield); + int ret = svc_datalog->add_entry(dpp, bci.info, index_log, i, y); if (ret < 0) { ldpp_dout(dpp, 1) << "WARNING: failed writing data log for bucket=" << bci.info.bucket << ", shard_id=" << i << "of generation=" @@ -2975,7 +2974,21 @@ int RGWBucketInstanceMetadataHandler::put_post( int RGWBucketInstanceMetadataHandler::remove(std::string& entry, RGWObjVersionTracker& objv_tracker, optional_yield y, const DoutPrefixProvider *dpp) { - return 0; // skip bucket instance removal. each zone will handle it independently during trimming + RGWBucketCompleteInfo bci; + int ret = svc_bucket->read_bucket_instance_info(entry, &bci.info, nullptr, + &bci.attrs, y, dpp); + if (ret == -ENOENT) { + return 0; + } + if (ret < 0) { + return ret; + } + + // skip bucket instance removal. each zone will handle it independently during trimming + + std::ignore = update_bucket_topic_mappings(dpp, &bci, /*current_bci=*/nullptr, + driver); + return 0; } int RGWBucketInstanceMetadataHandler::mutate(const std::string& entry, const ceph::real_time& mtime, diff --git a/src/rgw/driver/rados/rgw_cr_rados.h b/src/rgw/driver/rados/rgw_cr_rados.h index c01132fa355..412de94dd93 100644 --- a/src/rgw/driver/rados/rgw_cr_rados.h +++ b/src/rgw/driver/rados/rgw_cr_rados.h @@ -1775,7 +1775,6 @@ struct bucket_unordered_list_result { std::string prefix; int max_keys; bool is_truncated; - bool allow_unordered; std::list entries; bucket_unordered_list_result() : max_keys(0), is_truncated(false) {} @@ -1785,7 +1784,6 @@ struct bucket_unordered_list_result { JSONDecoder::decode_json("Prefix", prefix, obj); JSONDecoder::decode_json("MaxKeys", max_keys, obj); JSONDecoder::decode_json("IsTruncated", is_truncated, obj); - JSONDecoder::decode_json("allow-unordered", allow_unordered, obj); JSONDecoder::decode_json("Entries", entries, obj); } }; diff --git a/src/test/rgw/rgw_multi/tests.py b/src/test/rgw/rgw_multi/tests.py index febdb3c3c60..2f0e064d141 100644 --- a/src/test/rgw/rgw_multi/tests.py +++ b/src/test/rgw/rgw_multi/tests.py @@ -1829,6 +1829,7 @@ def test_bucket_log_trim_after_delete_bucket_primary_reshard(): bilog_autotrim(primary.zone, ['--rgw-sync-log-trim-max-buckets', '50'],) for zonegroup in realm.current_period.zonegroups: + zonegroup_conns = ZonegroupConns(zonegroup) for zone in zonegroup_conns.zones: assert check_bucket_instance_metadata(zone.zone, test_bucket.name) @@ -1892,6 +1893,7 @@ def test_bucket_log_trim_after_delete_bucket_secondary_reshard(): time.sleep(config.checkpoint_delay) for zonegroup in realm.current_period.zonegroups: + zonegroup_conns = ZonegroupConns(zonegroup) for zone in zonegroup_conns.zones: assert check_bucket_instance_metadata(zone.zone, test_bucket.name) -- 2.39.5