New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
rgw: Head/GetObject support partNumber #50148
Conversation
i rebased this on top of #50169 and #50172 so it can call unfortunately, it turns out that multipart part uploads don't store their storing them in the multipart meta object makes it easier for but without a manifest in part's head object, i had to add a new |
in the sal layer, this feature is only implemented by the only part information that 'leaks' from |
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
thanks @dang. this is passing the test cases in ceph/s3-tests#491. i'll tag for qa after rebasing |
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
last qa run had one consistent java test failure:
there isn't any additional context for debugging, and i'm having trouble running the tests locally |
// navigate to the requested part in the manifest | ||
RGWObjManifest::obj_iterator end = manifest->obj_end(dpp); | ||
if (end.get_cur_part_id() == 0) { // not multipart | ||
ldpp_dout(dpp, 20) << "object does not have a multipart manifest" << dendl; | ||
return -ERR_INVALID_PART; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
interesting, a java test case ObjectTest.testDownloadHLAPI
is failing on this because it's requesting partNumber=1
for a non-multipart upload. i guess it expects to read the entire object in that case?
i suppose that could be used as an optimization to read partNumber=1
which, if multipart, will return the x-amz-mp-parts-count
that you can then read as parts in parallel
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
updated the test_non_multipart_get_part
test case for this and see it passing
Signed-off-by: Casey Bodley <cbodley@redhat.com>
and just add the follow_olh=true argument to callers Signed-off-by: Casey Bodley <cbodley@redhat.com>
add an overload to expose the manifest storage to callers of get_obj_state(). the existing RGWObjState+RGWObjManifest overload just calls the RGWObjStateManifest one Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
when called on a versioned object, prepare() may follow olh and look up a different object instance but when called on a multipart part, we should not overwrite the original object name with the part's object name (of the form mymultipart.2~_XLFNqOW0NuiALg7q4-Hi_7hdtAkZUH.1) Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
and omit the x-amz-mp-parts-count response header Signed-off-by: Casey Bodley <cbodley@redhat.com>
included test cases from ceph/s3-tests#491:
|
aws s3 supports HEAD/GET requests for individual parts of a completed multipart upload with the
partNumber
query parameterShow available Jenkins commands
jenkins retest this please
jenkins test classic perf
jenkins test crimson perf
jenkins test signed
jenkins test make check
jenkins test make check arm64
jenkins test submodules
jenkins test dashboard
jenkins test dashboard cephadm
jenkins test api
jenkins test docs
jenkins render docs
jenkins test ceph-volume all
jenkins test ceph-volume tox
jenkins test windows