Skip to content

HDDS-17452. Introduce ClientProtocol delegation for S3 Gateway - #11757

Merged
adoroszlai merged 2 commits into
apache:masterfrom
rich7420:HDDS-17452
Oct 26, 2026
Merged

adoroszlai merged 2 commits into
apache:masterfrom
rich7420:HDDS-17452

Conversation

@rich7420

Copy link
Copy Markdown
Contributor

What changes were proposed in this pull request?

Introduce S3ClientProtocol to explicitly delegate every ClientProtocol method, including defaults, and install it for S3 Gateway OM clients without changing behavior.

Extracted from #11740 so the shared refactoring can be reviewed separately from the operation changes in HDDS-16701, HDDS-16702 and HDDS-16703.

What is the link to the Apache JIRA

https://issues.apache.org/jira/browse/HDDS-17452

How was this patch tested?

  • TestS3ClientProtocol, TestRpcClient and TestOzoneClient: 496 cases passed with JDK 21 and the Java 8 client target. Error Prone and repository Checkstyle passed.
  • Tests fail when default forwarders are removed, forwarding arguments are swapped, or S3 factory wrapping is removed; restoring the implementation passes.
  • Compared 10 real HTTP request cases and their correlated OM RPC calls against upstream; outcomes and RPC calls matched.
  • Fork CI passed. 10×10 flaky check passed all 100 iterations (31,000 cases, zero failures).

Copilot AI balanced review requested due to automatic review settings October 25, 2026 11:47

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.

@rich7420

Copy link
Copy Markdown
Contributor Author

cc @chungen0126 @adoroszlai

@adoroszlai adoroszlai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @rich7420 for the patch, LGTM.

@chungen0126 chungen0126 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 LGTM

@adoroszlai
adoroszlai merged commit da33da1 into apache:master Oct 26, 2026
56 checks passed
@adoroszlai

Copy link
Copy Markdown
Contributor

Thanks @rich7420 for the patch, @chungen0126 for the review.

@rich7420

Copy link
Copy Markdown
Contributor Author

@adoroszlai @chungen0126 thanks for the review!

@adoroszlai

Copy link
Copy Markdown
Contributor

I think it would be good to remove any S3-specific method recently added to ClientProtocol as part of HDDS-16602 before the 2.3.0 release (probably HDDS-16797 is the only one).

@chungen0126

chungen0126 commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Hi @adoroszlai , I was thinking about APIs like getS3KeyInfo, headS3Object, and others that were added previously related to s3 actions. Moving them over here would definitely make things cleaner. Do you think it makes sense to mark the old ones as @Deprecated first, and then migrate them here?

@rich7420

Copy link
Copy Markdown
Contributor Author

@adoroszlai @chungen0126 Opened HDDS-17485 for Abort and HDDS-17486 for Get/Head migration. Should we keep the released Get/Head methods as @Deprecated wrappers while migrating their callers?

errose28 added a commit to errose28/ozone that referenced this pull request Oct 27, 2026
* master: (114 commits)
  HDDS-17411. Show one initialization notice on the Namespace Usage page (apache#11737)
  HDDS-17375. Create new submodule ozone-integration-test-tools (apache#11754)
  HDDS-17452. Introduce ClientProtocol delegation for S3 Gateway (apache#11757)
  HDDS-16661. Validate unsigned S3 checksum trailer completion and framing (apache#11586)
  HDDS-17450. Speed up TestDirectoryDeletingService (apache#11765)
  HDDS-17308. ListObjectsV2 Incorrectly Filters CommonPrefixes When StartAfter Is Before the Matching Prefixes (apache#11715).
  Clamp Echo sleep time and response payload size. (apache#44)
  HDDS-17433. Add a freon command for positioned reads on shared input streams (apache#11741)
  HDDS-17239. Initialize usage counters on bucket create (apache#11742)
  HDDS-17357. Initialize Netty in background when Ozone client is created (apache#11726)
  HDDS-17426. Disable ozone.tracing.client.application-aware in acceptance tests (apache#11758)
  HDDS-16737. Share OM follower read logic between the Hadoop RPC and gRPC clients (apache#11418)
  HDDS-17446. Copy datanode container set in NodeStateMap.updateNode only once (apache#11746)
  HDDS-17454. Bump asm to 9.11.1 (apache#11750)
  HDDS-17453. Bump jackson to 2.21.8 (apache#11749)
  HDDS-17376. Scale repeated-defrag footprint tolerance with the number of OM tables (apache#11708)
  HDDS-17380. Fix deadlock when BackgroundContainerDataScanner shutdown during volume failure (apache#11729)
  HDDS-17251. List open multipart uploads in ListOpenFiles (apache#11739)
  HDDS-17361. S3 Gateway can set another user as the owner of a new key (apache#11707)
  HDDS-17238. Initialize refCount and usedNamespace on volume create (apache#11720)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants