rgw/multisite: add cls versioning for data sync per shard status object#47614
rgw/multisite: add cls versioning for data sync per shard status object#47614
Conversation
Signed-off-by: Shilpa Jagannath <smanjara@redhat.com>
cbodley
left a comment
There was a problem hiding this comment.
this is a good start! we found all the places that need version tracking
as a next step, we need to arrange for each datalog shard to have its own instance of RGWObjVersionTracker, so it can use that same instance for every step of the process (Read, Init, List, and Sync). this way, we can detect racing writes at any point of the process, instead of just in between the new reads and their writes
RGWDataSyncCR has a member variable rgw_data_sync_status sync_status that stores a map of the per-shard sync markers, which gets passed to each of these coroutines RGWReadDataSyncStatusMarkersCR, RGWInitDataSyncStatusCoroutine, and RGWListBucketIndexesCR. each RGWDataSyncShardCR also gets a pointer to its own shard marker
we'll need to do something similar for the storage of these RGWObjVersionTrackers. for example, by adding a std::vector<RGWObjVersionTracker> to RGWDataSyncCR that gets passed along with the sync status and shard markers. RGWDataSyncShardCR should get its RGWObjVersionTracker& by reference, and share that with its RGWDataSyncShardMarkerTrack
|
p.s. just be aware of conflicts with @adamemerson's work in #47422 and #47566 |
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
Addressing this in a rebased version #47682 |
|
Closing against #47682 |
Signed-off-by: Shilpa Jagannath smanjara@redhat.com
Contribution Guidelines
To sign and title your commits, please refer to Submitting Patches to Ceph.
If you are submitting a fix for a stable branch (e.g. "pacific"), please refer to Submitting Patches to Ceph - Backports for the proper workflow.
Checklist
Show available Jenkins commands
jenkins retest this pleasejenkins test classic perfjenkins test crimson perfjenkins test signedjenkins test make checkjenkins test make check arm64jenkins test submodulesjenkins test dashboardjenkins test dashboard cephadmjenkins test apijenkins test docsjenkins render docsjenkins test ceph-volume alljenkins test ceph-volume toxjenkins test windows