Skip to content

Commit b40c95e

Browse files
authored
HDDS-13429. Custom metadata headers with uppercase characters are not supported (apache#8805)
1 parent ece9330 commit b40c95e

2 files changed

Lines changed: 20 additions & 2 deletions

File tree

hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/EndpointBase.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -297,8 +297,8 @@ protected Map<String, String> getCustomMetadataFromHeaders(
297297

298298
Set<String> customMetadataKeys = requestHeaders.keySet().stream()
299299
.filter(k -> {
300-
if (k.startsWith(CUSTOM_METADATA_HEADER_PREFIX) &&
301-
!excludeMetadataFields.contains(
300+
if (k.toLowerCase().startsWith(CUSTOM_METADATA_HEADER_PREFIX) &&
301+
!excludeMetadataFields.contains(
302302
k.substring(
303303
CUSTOM_METADATA_HEADER_PREFIX.length()))) {
304304
return true;

hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestEndpointBase.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import static org.junit.jupiter.api.Assertions.assertThrows;
2424

2525
import java.nio.charset.StandardCharsets;
26+
import java.util.Locale;
2627
import java.util.Map;
2728
import javax.ws.rs.core.MultivaluedHashMap;
2829
import javax.ws.rs.core.MultivaluedMap;
@@ -96,4 +97,21 @@ public void init() { }
9697
assertThat(e.getCode()).contains("MetadataTooLarge");
9798
}
9899

100+
@Test
101+
public void testCustomMetadataHeadersWithUpperCaseHeaders() throws OS3Exception {
102+
MultivaluedMap<String, String> s3requestHeaders = new MultivaluedHashMap<>();
103+
String key = "CUSTOM-KEY";
104+
String value = "custom-value1";
105+
s3requestHeaders.add(CUSTOM_METADATA_HEADER_PREFIX.toUpperCase(Locale.ROOT) + key, value);
106+
107+
EndpointBase endpointBase = new EndpointBase() {
108+
@Override
109+
public void init() { }
110+
};
111+
112+
Map<String, String> customMetadata = endpointBase.getCustomMetadataFromHeaders(s3requestHeaders);
113+
114+
assertEquals(value, customMetadata.get(key));
115+
}
116+
99117
}

0 commit comments

Comments
 (0)