This is an automated email from the ASF dual-hosted git repository.
chungen0126 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 5bfa452f3e5 HDDS-15607. Return x-amz-meta-* user-defined object
metadata on S3 GetObject (#10785)
5bfa452f3e5 is described below
commit 5bfa452f3e551a2cdf79e3c78247bc3d507b6fa5
Author: Gargi Jaiswal <[email protected]>
AuthorDate: Tue Jul 21 12:36:19 2026 +0530
HDDS-15607. Return x-amz-meta-* user-defined object metadata on S3
GetObject (#10785)
---
.../apache/hadoop/ozone/s3/endpoint/ObjectEndpoint.java | 1 +
.../apache/hadoop/ozone/s3/endpoint/TestObjectGet.java | 17 +++++++++++++++++
2 files changed, 18 insertions(+)
diff --git
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/ObjectEndpoint.java
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/ObjectEndpoint.java
index 464cd3c7482..3989feec27c 100644
---
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/ObjectEndpoint.java
+++
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/ObjectEndpoint.java
@@ -491,6 +491,7 @@ Response handleGetRequest(ObjectRequestContext context,
String keyPath)
addLastModifiedDate(responseBuilder, keyDetails);
addTagCountIfAny(responseBuilder, keyDetails);
+ addCustomMetadataHeaders(responseBuilder, keyDetails);
long metadataLatencyNs =
getMetrics().updateGetKeyMetadataStats(startNanos);
perf.appendMetaLatencyNanos(metadataLatencyNs);
diff --git
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectGet.java
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectGet.java
index 0494664cd40..e8a8473a815 100644
---
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectGet.java
+++
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectGet.java
@@ -25,6 +25,7 @@
import static
org.apache.hadoop.ozone.s3.exception.S3ErrorTable.INVALID_ARGUMENT;
import static org.apache.hadoop.ozone.s3.exception.S3ErrorTable.NO_SUCH_KEY;
import static org.apache.hadoop.ozone.s3.exception.S3ErrorTable.PRECOND_FAILED;
+import static
org.apache.hadoop.ozone.s3.util.S3Consts.CUSTOM_METADATA_HEADER_PREFIX;
import static org.apache.hadoop.ozone.s3.util.S3Consts.IF_MATCH_HEADER;
import static
org.apache.hadoop.ozone.s3.util.S3Consts.IF_MODIFIED_SINCE_HEADER;
import static org.apache.hadoop.ozone.s3.util.S3Consts.IF_NONE_MATCH_HEADER;
@@ -45,6 +46,7 @@
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MultivaluedHashMap;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
@@ -205,6 +207,21 @@ public void
testGetIgnoresIfModifiedSinceWhenIfNoneMatchPresent()
assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
}
+ @Test
+ public void getKeyWithCustomMetadata() throws IOException, OS3Exception {
+ final String keyName = "key-with-meta";
+ final String metaValue = "mymeta";
+ MultivaluedMap<String, String> requestHeaders = new MultivaluedHashMap<>();
+ requestHeaders.putSingle(CUSTOM_METADATA_HEADER_PREFIX + "meta1",
metaValue);
+ when(headers.getRequestHeaders()).thenReturn(requestHeaders);
+
+ assertSucceeds(() -> put(rest, BUCKET_NAME, keyName, CONTENT));
+
+ Response response = get(rest, BUCKET_NAME, keyName);
+ assertEquals(metaValue,
+ response.getHeaderString(CUSTOM_METADATA_HEADER_PREFIX + "meta1"));
+ }
+
@Test
public void getKeyWithTag() throws IOException, OS3Exception {
//WHEN
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]