RGW | fix conditional Delete, MultiDelete and Put#63348
RGW | fix conditional Delete, MultiDelete and Put#63348AliMasarweh merged 2 commits intoceph:mainfrom
Conversation
|
looking for could you please add test cases for put_object() and complete_multipart_upload() that covers both etag values and the * wildcard? |
sure, @mattbenjamin said that there are more cases that need fix such as: |
1bb3047 to
c8292fd
Compare
e24ca5a to
9d3a326
Compare
9d3a326 to
4e1133e
Compare
6234330 to
0627bf2
Compare
02498a1 to
186325b
Compare
186325b to
be9ec82
Compare
|
I think the issue in conditional put with versioned bucket, is this block of code in RGWRados::get_obj_state_impl: we return from this function and the object doesn't have an etag in attrs why are we expecting an attrs here? |
|
I think the issue is that there are two objects in question here. The unversioned object, and the versioned object. That sequence you posted does load the state (and so the attributes) of the versioned object, but it doesn't do anything to the unversioned object. Where is this being called from? |
|
the subject says "fix conditional write" but is this PR going to address DeleteObject only? |
#60957 reported a similar issue here, but the fix wasn't passing tests :( edit: i think that was specific to multipart uploads though |
@AliMasarweh what are you expecting conditional put to do in a versioned bucket? with versioning enabled, writes create a new object version instead of overwriting an existing one. so If-Match would not find an existing etag for comparison edit: maybe i'm mistaken, https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-writes.html#conditional-error-response talks about interactions with versioning enabled/suspended |
|
https://pulpito.ceph.com/alimasa-2025-07-17_02:35:01-rgw-wip-alimasa-68183-distro-default-smithi/ |
yikes, lots of red there. looks mostly unrelated except for one rgw/verify job: https://qa-proxy.ceph.com/teuthology/alimasa-2025-07-17_02:35:01-rgw-wip-alimasa-68183-distro-default-smithi/8392360/teuthology.log
|
mattbenjamin
left a comment
There was a problem hiding this comment.
I made a few comments related to readability; in addition, there are now too many commits to cleanly backport; can you please squash this down to no more than a few logically related commits?
a2fda74 to
d3a37b2
Compare
size_match supports size 0 checks_preconditions checks for last_modified and size as well supports versioned object Signed-off-by: Ali Masarwa <amasarwa@redhat.com>
d3a37b2 to
0f5e85c
Compare
|
do we have a stable commit on main that I should rebase on my code, teuthology has too many valgrind error: |
mattbenjamin
left a comment
There was a problem hiding this comment.
appreciate the cleanup, new change backported with only the async dispatch conflict, seems to have passed downstream QA; thank you!
|
qa/rgw/s3tests-branch.yaml modification should be cleaned up as well |
Signed-off-by: Ali Masarwa <amasarwa@redhat.com>
0f5e85c to
b99a47f
Compare
|
jenkins test make check arm64 |
|
This PR appears to have caused some significant breakage: A new error regarding orphan list showed up during the teuthology run that indicated a regression: I bisected the orphan list failure to commit 55f5b76 , which is one of the two commits in this PR. |
|
Do you have any plans to backport this to squid? |
The tracker does not list any backports, and we try to record backports there. But @AliMasarweh may know differently.... |
thanks @cupnes, i updated https://tracker.ceph.com/issues/68183 to request squid and tentacle backports |
https://tracker.ceph.com/issues/68183
https://bugzilla.redhat.com/show_bug.cgi?id=2350732
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. "quincy"), please refer to Submitting Patches to Ceph - Backports for the proper workflow.
When filling out the below checklist, you may click boxes directly in the GitHub web UI. When entering or editing the entire PR message in the GitHub web UI editor, you may also select a checklist item by adding an
xbetween the brackets:[x]. Spaces and capitalization matter when checking off items this way.Checklist
Show available Jenkins commands
jenkins test classic perfJenkins Job | Jenkins Job Definitionjenkins test crimson perfJenkins Job | Jenkins Job Definitionjenkins test signedJenkins Job | Jenkins Job Definitionjenkins test make checkJenkins Job | Jenkins Job Definitionjenkins test make check arm64Jenkins Job | Jenkins Job Definitionjenkins test submodulesJenkins Job | Jenkins Job Definitionjenkins test dashboardJenkins Job | Jenkins Job Definitionjenkins test dashboard cephadmJenkins Job | Jenkins Job Definitionjenkins test apiJenkins Job | Jenkins Job Definitionjenkins test docsReadTheDocs | Github Workflow Definitionjenkins test ceph-volume allJenkins Jobs | Jenkins Jobs Definitionjenkins test windowsJenkins Job | Jenkins Job Definitionjenkins test rook e2eJenkins Job | Jenkins Job Definition