From: Oguzhan Ozmen Date: Tue, 11 Nov 2025 16:16:19 +0000 (+0000) Subject: RGW/multisite/RGWListRemoteBucketCR: clear reused bucket_list_result to avoid stale... X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c8a66a96e913b8a112ef26bf3399ede861686d23;p=ceph-ci.git RGW/multisite/RGWListRemoteBucketCR: clear reused bucket_list_result to avoid stale listings RGWBucketFullSyncCR could spin indefinitely when the source bucket was already deleted. The coroutine reused a bucket_list_result member, and RGWListRemoteBucketCR populated it without clearing prior state. Stale entries/is_truncated from a previous iteration caused the loop to continue even after the bucket no longer existed. Fix by clearing the provided bucket_list_result at the start of RGWListRemoteBucketCR (constructor), ensuring each listing starts from a clean state and reflects the current remote bucket contents. This prevents the infinite loop and returns correct results when the bucket has been deleted. Fixes: https://tracker.ceph.com/issues/73799 Signed-off-by: Oguzhan Ozmen --- diff --git a/src/rgw/driver/rados/rgw_data_sync.cc b/src/rgw/driver/rados/rgw_data_sync.cc index 83c1757439a..04978e3a4a5 100644 --- a/src/rgw/driver/rados/rgw_data_sync.cc +++ b/src/rgw/driver/rados/rgw_data_sync.cc @@ -4062,7 +4062,9 @@ public: RGWListRemoteBucketCR(RGWDataSyncCtx *_sc, const rgw_bucket_shard& bs, rgw_obj_key& _marker_position, bucket_list_result *_result) : RGWCoroutine(_sc->cct), sc(_sc), sync_env(_sc->env), bs(bs), - marker_position(_marker_position), result(_result) {} + marker_position(_marker_position), result(_result) { + result->reset_entries(); + } int operate(const DoutPrefixProvider *dpp) override { reenter(this) {