You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ozone.apache.org by "Chung-En Lee (Jira)" <ji...@apache.org> on 2026/09/16 19:23:00 UTC

[jira] [Updated] (HDDS-16490) Implement GetObjectRetention

     [ https://issues.apache.org/jira/browse/HDDS-16490?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chung-En Lee updated HDDS-16490:
--------------------------------
    Summary: Implement GetObjectRetention  (was: Implement GetObjectRetention API)

> Implement GetObjectRetention
> ----------------------------
>
>                 Key: HDDS-16490
>                 URL: https://issues.apache.org/jira/browse/HDDS-16490
>             Project: Apache Ozone
>          Issue Type: Sub-task
>            Reporter: Chung-En Lee
>            Priority: Major
>
> mplement the S3 {{GetObjectRetention}} operation to retrieve the active retention configuration ({{{}Mode{}}} and {{{}RetainUntilDate{}}}) of an individual key. This task spans S3 Gateway REST routing, OM client protocol translation, Ranger authorization, and OM metadata lookup in {{{}KeyTable{}}}.
> {*}1. S3 Gateway ({{{}hadoop-ozone/s3gateway{}}}){*}:
>  * Add route handler for {{{}GET /\{bucket}/\{key}?retention{}}}.
>  * Forward the request to Ozone Manager via client protocol.
>  * Serialize the returned retention metadata into standard S3 {{Retention}} XML:
> XML
>  * Map OM exceptions to standard S3 error responses:
>  ** Return {{404 NoSuchKey}} if the key does not exist.
>  ** Return {{404 NoSuchObjectLockConfiguration}} ({{{}The specified object does not have an ObjectLock configuration{}}}) if the key exists but has no retention settings applied.
> {*}2. Protobuf Protocol ({{{}OmClientProtocol.proto{}}}) & OM Client{*}:
>  * Add RPC messages:
>  ** {{GetObjectRetentionRequest}} (contains {{{}volumeName{}}}, {{{}bucketName{}}}, {{{}keyName{}}}).
>  ** {{GetObjectRetentionResponse}} (contains {{RetentionConfig}} with {{retentionMode}} and {{{}retainUntilDate{}}}).
>  * Register the new request type in {{OmClientProtocol}} and wire through {{{}OzoneManagerProtocolClientSideTranslatorPB{}}}.
> {*}3. OM Read Path / Metadata Handler ({{{}hadoop-ozone/ozone-manager{}}}){*}:
>  * Authorize the incoming request against Ranger action {{GetObjectRetention}} (requiring key-level {{READ}} permission).
>  * Acquire bucket/key read lock and retrieve {{OmKeyInfo}} from {{{}KeyTable{}}}.
>  * If key is absent, throw {{{}KEY_NOT_FOUND{}}}.
>  * Inspect {{{}OmKeyInfo.getRetentionConfig(){}}}:
>  ** If {{retentionConfig}} is null or unconfigured, throw {{OBJECT_LOCK_CONFIG_NOT_FOUND}} (mapped to S3 {{{}404 NoSuchObjectLockConfiguration{}}}).
>  ** If retention exists, return the {{RetentionConfig}} domain model containing {{Mode}} and calculated {{{}RetainUntilDate{}}}.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org