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.
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.
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
partNumberquery parameterShow 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