Bug #73539
openrgw/lc : LC accidentally deleting DMs as part of DM expiration and Current expiration and exposing deleted objects as current during pagination
0%
Description
Currently there is logic while processing DM, that if DM is current and there is another non-current object there, do not delete the DM as part of LC as it would make the non-current (the deleted object) as current.
To check if there exists another version, here is the logic that fetches the next item in list (unordered bucket list fetched by LC).However there is a FLAW in this approach when DM is present at the end of LIST (pagination list) but there are still items to be fetched (as we only fetch 1000 items).
Page 1: [...other objects..., DeleteMarker for "foo"]
Page 2: ["foo" v1, "foo" v2, ...other objects...]
In the above case, code returns FALSE to any other objects present after DM and LC goes and deletes the object exposing the the deleted object (non current) as current.
In order to fix this we either need to fetch the next page during next-key check or be conservative and skip deletion of DM if it occurs at end of pagination.
Updated by Joseph Mundackal 5 months ago
- Backport set to squid tentacle
- Pull request ID set to 65947
Updated by Casey Bodley 5 months ago
- Status changed from New to Fix Under Review
Updated by Upkeep Bot 16 days ago
- Status changed from Fix Under Review to Pending Backport
- Merge Commit set to e45af8703940bea4aec3045fabd61bcee2f98dae
- Fixed In set to v20.3.0-5520-ge45af87039
- Upkeep Timestamp set to 2026-02-23T15:23:16+00:00
Updated by Upkeep Bot 16 days ago
- Copied to Backport #75111: tentacle: rgw/lc : LC accidentally deleting DMs as part of DM expiration and Current expiration and exposing deleted objects as current during pagination added
Updated by Upkeep Bot 16 days ago
- Copied to Backport #75112: squid: rgw/lc : LC accidentally deleting DMs as part of DM expiration and Current expiration and exposing deleted objects as current during pagination added