From: Jane Zhu Date: Thu, 23 Jan 2025 22:15:20 +0000 (+0000) Subject: rgw: add a multisite test case for stacked delete markers X-Git-Tag: v20.3.0~287^2~1 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=3b9ba9083ee0475920a158134701cbc6302fc11c;p=ceph.git rgw: add a multisite test case for stacked delete markers Signed-off-by: Jane Zhu --- diff --git a/src/test/rgw/rgw_multi/tests.py b/src/test/rgw/rgw_multi/tests.py index 433cd034fe0b5..ee746aae7be4c 100644 --- a/src/test/rgw/rgw_multi/tests.py +++ b/src/test/rgw/rgw_multi/tests.py @@ -1038,6 +1038,8 @@ def test_delete_marker_full_sync(): # create a delete marker key2 = new_key(zone, bucket, 'obj') key2.delete() + key2.delete() + key2.delete() # wait for full sync for _, bucket in zone_bucket: @@ -1062,11 +1064,40 @@ def test_suspended_delete_marker_full_sync(): # create a delete marker key2 = new_key(zone, bucket, 'obj') key2.delete() + key2.delete() + key2.delete() # wait for full sync for _, bucket in zone_bucket: zonegroup_bucket_checkpoint(zonegroup_conns, bucket.name) +def test_concurrent_delete_markers_incremental_sync(): + zonegroup = realm.master_zonegroup() + zonegroup_conns = ZonegroupConns(zonegroup) + zone = zonegroup_conns.rw_zones[0] + + # create a versioned bucket + bucket = zone.create_bucket(gen_bucket_name()) + log.debug('created bucket=%s', bucket.name) + bucket.configure_versioning(True) + + zonegroup_meta_checkpoint(zonegroup) + + obj = 'obj' + + # upload a dummy object and wait for sync. this forces each zone to finish + # a full sync and switch to incremental + new_key(zone, bucket, obj).set_contents_from_string('') + zonegroup_bucket_checkpoint(zonegroup_conns, bucket.name) + + # create several concurrent delete markers on each zone and let them race to sync + for i in range(2): + for zone_conn in zonegroup_conns.rw_zones: + key = new_key(zone_conn, bucket, obj) + key.delete() + + zonegroup_bucket_checkpoint(zonegroup_conns, bucket.name) + def test_bucket_versioning(): buckets, zone_bucket = create_bucket_per_zone_in_realm() for _, bucket in zone_bucket: