This is an automated email from the ASF dual-hosted git repository.

tejaskriya 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 b40c95e917 HDDS-13429. Custom metadata headers with uppercase 
characters are not supported (#8805)
b40c95e917 is described below

commit b40c95e9172ab35a86c5c9e655076a2394fe5ea4
Author: Hsu Han Wen <[email protected]>
AuthorDate: Wed Jul 16 16:28:57 2025 +0800

    HDDS-13429. Custom metadata headers with uppercase characters are not 
supported (#8805)
---
 .../apache/hadoop/ozone/s3/endpoint/EndpointBase.java  |  4 ++--
 .../hadoop/ozone/s3/endpoint/TestEndpointBase.java     | 18 ++++++++++++++++++
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git 
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/EndpointBase.java
 
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/EndpointBase.java
index 78e32d5bec..0f598648be 100644
--- 
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/EndpointBase.java
+++ 
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/EndpointBase.java
@@ -297,8 +297,8 @@ protected Map<String, String> getCustomMetadataFromHeaders(
 
     Set<String> customMetadataKeys = requestHeaders.keySet().stream()
             .filter(k -> {
-              if (k.startsWith(CUSTOM_METADATA_HEADER_PREFIX) &&
-                      !excludeMetadataFields.contains(
+              if (k.toLowerCase().startsWith(CUSTOM_METADATA_HEADER_PREFIX) &&
+                  !excludeMetadataFields.contains(
                         k.substring(
                           CUSTOM_METADATA_HEADER_PREFIX.length()))) {
                 return true;
diff --git 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestEndpointBase.java
 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestEndpointBase.java
index 15de5f3cfd..ae47655e43 100644
--- 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestEndpointBase.java
+++ 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestEndpointBase.java
@@ -23,6 +23,7 @@
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.nio.charset.StandardCharsets;
+import java.util.Locale;
 import java.util.Map;
 import javax.ws.rs.core.MultivaluedHashMap;
 import javax.ws.rs.core.MultivaluedMap;
@@ -96,4 +97,21 @@ public void init() { }
     assertThat(e.getCode()).contains("MetadataTooLarge");
   }
 
+  @Test
+  public void testCustomMetadataHeadersWithUpperCaseHeaders() throws 
OS3Exception {
+    MultivaluedMap<String, String> s3requestHeaders = new 
MultivaluedHashMap<>();
+    String key = "CUSTOM-KEY";
+    String value = "custom-value1";
+    
s3requestHeaders.add(CUSTOM_METADATA_HEADER_PREFIX.toUpperCase(Locale.ROOT) + 
key, value);
+
+    EndpointBase endpointBase = new EndpointBase() {
+      @Override
+      public void init() { }
+    };
+
+    Map<String, String> customMetadata = 
endpointBase.getCustomMetadataFromHeaders(s3requestHeaders);
+
+    assertEquals(value, customMetadata.get(key));
+  }
+
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to