Skip to content

Conversation

@adoroszlai
Copy link
Contributor

What changes were proposed in this pull request?

First step towards splitting ObjectEndpoint:

  • Create the abstract parent class for request handlers, similar to BucketOperationHandler.
  • Add helper subclasses for:
    • audit logging,
    • delegation to a list of handlers.
  • Add actual implementations, only for PUT request for now:
    • object tagging,
    • object ACL (not supported).
  • Let ObjectEndpoint itself implement the new interface to handle remaining branches of PUT request (to be moved to separate handlers later).
  • Create a context object for keeping mutable state shared between handlers. This allows:
    • looking up OzoneVolume and OzoneBucket only if needed and at most once
    • passing S3GAction for audit logging back to the caller
    • reducing number and variety of parameters in handler methods

This is a bit different from BucketOperationHandler, where each implementation is currently responsible for its own audit logging. I plan to refactor that to reduce duplication.

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

How was this patch tested?

Existing tests.

https://github.com/adoroszlai/ozone/actions/runs/21434541033

@adoroszlai adoroszlai self-assigned this Jan 28, 2026
@adoroszlai adoroszlai added the s3 S3 Gateway label Jan 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

s3 S3 Gateway

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant