Bug 2153834

Summary: [RFE] RGW Multisite sync policy[bucket-level]. Does not sync objects that have been modified/update while it's in "allowed" or "Disabled" state
Product: [Red Hat Storage] Red Hat Ceph Storage Reporter: daniel parkes <dparkes>
Component: RGW-MultisiteAssignee: Soumya Koduri <skoduri>
Status: ASSIGNED --- QA Contact: Anuchaithra <anrao>
Severity: high Docs Contact:
Priority: unspecified    
Version: 6.0CC: anrao, ceph-eng-bugs, cephqe-warriors, ckulal, mbenjamin, skoduri, tchandra, vereddy
Target Milestone: ---Keywords: FutureFeature
Target Release: 8.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description daniel parkes 2022-12-15 15:44:20 UTC
Description of problem:

Hi,

When testing the RGW Multisite(16.2.8-85.el8cp) sync policy, modifications/updates to objects take place during the zonegroup or bucket replication is set to "Allowed" or "Disabled" don't reconcile/sync once we configure the replication of the zonegroup or bucket to "enabled".

So for the simplest example at the zonegroup level, I create zone1/zone2 symmetrical replication:

$ radosgw-admin sync group create --group-id=us --status=enabled --rgw-zonegroup=multizone  --rgw-zone=zone2
$ radosgw-admin sync group flow create --group-id=us --flow-id=us-1-to-2 --flow-type=symmetrical --zones=zone1,zone2 --rgw-zonegroup=multizone --rgw-realm=multisite  --rgw-zone=zone2
$ radosgw-admin sync group pipe create --group-id=us --pipe-id=ussynctoall --source-zones='*' --source-bucket='*' --dest-zones='*' --dest-bucket='*'  --rgw-zone=zone2
$ radosgw-admin period update --commit

I then upload objects to bucket1 in zone2, that get replicated ok. 

$ aws s3  --profile ms  --endpoint http://zone2:8080 ls s3://bucket1/
2022-12-14 15:20:22       4066 hosts
2022-12-15 14:55:54       4066 hosts1
2022-12-15 15:22:35       4066 hosts2

$ aws s3  --profile ms  --endpoint http://zone1:8080 ls s3://bucket1/
2022-12-14 15:20:22       4066 hosts
2022-12-15 14:55:54       4066 hosts1
2022-12-15 15:22:35       4066 hosts2

I then set the sync group to allowed:

$ radosgw-admin sync group modify --group-id=us --status=allowed
$ radosgw-admin period update --commit

Upload objects to bucket1 in zone2, and they don't get replicated, so expected behaviour.

$ aws s3  --profile ms  --endpoint http://zone2:8080 ls s3://bucket1/
2022-12-14 15:20:22       4066 hosts
2022-12-15 14:55:54       4066 hosts1
2022-12-15 15:22:35       4066 hosts2
2022-12-14 17:23:52       4066 hosts3
2022-12-14 17:27:02       4066 hosts4
2022-12-14 17:27:15       4066 hosts5

$ aws s3  --profile ms  --endpoint http://zone1:8080 ls s3://bucket1/
2022-12-14 15:20:22       4066 hosts
2022-12-15 14:55:54       4066 hosts1
2022-12-15 15:22:35       4066 hosts2


I then set the zonegroup replication back to 'Enabled':

$ radosgw-admin sync group modify --group-id=us --status=enabled
$ radosgw-admin period update --commit 

And copy one new object host6:

$ aws s3  --profile ms  --endpoint http://zone2:8080 ls s3://bucket1/
2022-12-14 15:20:22       4066 hosts
2022-12-15 14:55:54       4066 hosts1
2022-12-15 15:22:35       4066 hosts2
2022-12-14 17:23:52       4066 hosts3
2022-12-14 17:27:02       4066 hosts4
2022-12-14 17:27:15       4066 hosts5
2022-12-14 17:29:15       4066 hosts6

host6 file gets replicated ok but files hosts3-5 that were uploaded during the time the zone replication was in 'Allowed' state don't get synced:

$ aws s3  --profile ms  --endpoint http://zone2:8080 ls s3://bucket1/
2022-12-14 15:20:22       4066 hosts
2022-12-15 14:55:54       4066 hosts1
2022-12-15 15:22:35       4066 hosts2
2022-12-14 17:29:15       4066 hosts6

From what I see in this tracker this is expected behaviour?
https://tracker.ceph.com/issues/57489

This behaviour is different from what customers expect. Getting an automated sync of all the modified objects during the 'Allowed' state would be a critical feature for customers to keep their buckets in sync between zones without manual intervention.

Version-Release number of selected component (if applicable):


How reproducible:


Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:

Comment 1 RHEL Program Management 2022-12-15 15:44:28 UTC
Please specify the severity of this bug. Severity is defined here:
https://bugzilla.redhat.com/page.cgi?id=fields.html#bug_severity.