diff --git a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/BucketEndpoint.java b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/BucketEndpoint.java index 067d6a447c0..789bb451102 100644 --- a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/BucketEndpoint.java +++ b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/BucketEndpoint.java @@ -112,6 +112,10 @@ public Response list( ContinueToken decodedToken = ContinueToken.decodeFromString(continueToken); + // Assign marker to startAfter. for the compatibility of aws api v1 + if (startAfter == null && marker != null) { + startAfter = marker; + } if (startAfter != null && continueToken != null) { // If continuation token and start after both are provided, then we // ignore start After @@ -129,7 +133,7 @@ public Response list( response.setDelimiter(delimiter); response.setName(bucketName); response.setPrefix(prefix); - response.setMarker(""); + response.setMarker(marker == null ? "" : marker); response.setMaxKeys(maxKeys); response.setEncodingType(ENCODING_TYPE); response.setTruncated(false); @@ -187,6 +191,8 @@ public Response list( response.setTruncated(true); ContinueToken nextToken = new ContinueToken(lastKey, prevDir); response.setNextToken(nextToken.encodeToString()); + // Set nextMarker to be lastKey. for the compatibility of aws api v1 + response.setNextMarker(lastKey); } else { response.setTruncated(false); } diff --git a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/ListObjectResponse.java b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/ListObjectResponse.java index adb5f20e301..fb707b174dc 100644 --- a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/ListObjectResponse.java +++ b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/ListObjectResponse.java @@ -63,6 +63,9 @@ public class ListObjectResponse { @XmlElement(name = "NextContinuationToken") private String nextToken; + @XmlElement(name = "NextMarker") + private String nextMarker; + @XmlElement(name = "continueToken") private String continueToken; @@ -177,4 +180,12 @@ public int getKeyCount() { public void setKeyCount(int keyCount) { this.keyCount = keyCount; } + + public void setNextMarker(String nextMarker) { + this.nextMarker = nextMarker; + } + + public String getNextMarker() { + return nextMarker; + } }