Skip to content

Commit ca90f5f

Browse files
committed
HDDS-10521. ETag field should not be returned during GetObject if the key does not contain ETag field (apache#6377)
(cherry picked from commit 3d193fc)
1 parent 9a97366 commit ca90f5f

1 file changed

Lines changed: 12 additions & 2 deletions

File tree

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

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -483,9 +483,12 @@ public Response get(
483483
responseBuilder.header(CONTENT_RANGE_HEADER, contentRangeVal);
484484
}
485485
responseBuilder
486-
.header(ETAG, wrapInQuotes(keyDetails.getMetadata().get(ETAG)))
487486
.header(ACCEPT_RANGE_HEADER, RANGE_HEADER_SUPPORTED_UNIT);
488487

488+
if (keyDetails.getMetadata().get(ETAG) != null) {
489+
responseBuilder.header(ETAG, wrapInQuotes(keyDetails.getMetadata().get(ETAG)));
490+
}
491+
489492
// if multiple query parameters having same name,
490493
// Only the first parameters will be recognized
491494
// eg:
@@ -591,9 +594,16 @@ public Response head(
591594
}
592595

593596
ResponseBuilder response = Response.ok().status(HttpStatus.SC_OK)
594-
.header(ETAG, "" + wrapInQuotes(key.getMetadata().get(ETAG)))
595597
.header("Content-Length", key.getDataSize())
596598
.header("Content-Type", "binary/octet-stream");
599+
600+
if (key.getMetadata().get(ETAG) != null) {
601+
// Should not return ETag header if the ETag is not set
602+
// doing so will result in "null" string being returned instead
603+
// which breaks some AWS SDK implementation
604+
response.header(ETAG, "" + wrapInQuotes(key.getMetadata().get(ETAG)));
605+
}
606+
597607
addLastModifiedDate(response, key);
598608
addCustomMetadataHeaders(response, key);
599609
getMetrics().updateHeadKeySuccessStats(startNanos);

0 commit comments

Comments
 (0)