Huang Kuan Hao created HDDS-17485:
-------------------------------------
Summary: Use S3ClientProtocol delegation for AbortMultipartUpload
Key: HDDS-17485
URL: https://issues.apache.org/jira/browse/HDDS-17485
Project: Apache Ozone
Issue Type: Sub-task
Components: Ozone Client, s3gateway
Reporter: Huang Kuan Hao
Fix For: 2.3.0
HDDS-16797 added {{ClientProtocol#abortS3MultipartUpload}} to avoid a
preliminary volume lookup when aborting a multipart upload against an OM that
supports S3 volume context resolution. HDDS-17452 subsequently introduced
{{S3ClientProtocol}}, but it currently forwards both the generic and
S3-specific abort methods unchanged.
Migrate AbortMultipartUpload to the existing {{abortMultipartUpload(volumeName,
bucketName, keyName, uploadID)}} operation through {{S3ClientProtocol}}, and
remove the recently added parallel S3 operation method. This follows [the
request to remove recently added S3-specific methods before
2.3.0|https://github.com/apache/ozone/pull/11757#issuecomment-6418895533].
h3. Scope
* Change {{MultipartKeyHandler}} to use the generic abort operation through the
S3 client delegation path.
* Handle S3 volume context selection and OM-version fallback in the delegation
path. On a supporting OM, retain server-side volume resolution without a
preliminary {{GetS3VolumeContext}} RPC. On older OMs, retain volume resolution
before issuing the generic abort request.
* Share the abort request construction in {{RpcClient}} instead of maintaining
parallel generic and S3 implementations. Preserve validation and
explicit-volume behavior for non-S3 callers.
* Remove {{abortS3MultipartUpload}} from {{ClientProtocol}},
{{S3ClientProtocol}}, {{RpcClient}}, and affected stubs/tests after migrating
its callers.
* Preserve S3 action context, expected-owner checks, authorization, success
response, and {{NoSuchUpload}} error mapping. Reuse an already-resolved volume
where applicable without introducing a new lookup.
h3. Validation
* Verify the supporting-OM path sends the abort request in S3 context without
an extra volume RPC.
* Verify the older-OM fallback resolves the volume and sends a compatible abort
request.
* Verify explicit-volume aborts retain their existing behavior.
* Exercise successful abort, missing upload, authorization failure, and
expected-owner handling in relevant existing tests.
* Confirm production and test callers no longer depend on
{{abortS3MultipartUpload}}.
h3. Related work
* HDDS-16602: parent RPC optimization work.
* HDDS-16797: original AbortMultipartUpload optimization ([PR
#11449|https://github.com/apache/ozone/pull/11449]).
* HDDS-17452: shared S3 client delegation ([PR
#11757|https://github.com/apache/ozone/pull/11757]).
* [Original delegation
discussion|https://github.com/apache/ozone/pull/11740#pullrequestreview-5638868061].
The intended target is 2.3.0, following the review discussion. Migration and
compatibility policy for older Get/Head APIs are tracked separately.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]