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]

Reply via email to