Skip to content

Commit b13010b

Browse files
Set the marker to the last key when delimiter is null. This Prevents endless paginating through list results. (#1127)
1 parent b01a5be commit b13010b

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

priam/src/main/java/com/netflix/priam/aws/S3Iterator.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,15 @@ public boolean hasNext() {
7777
while (objectListing.isTruncated() && !iterator.hasNext()) {
7878
ListObjectsRequest.Builder listReqBuilder = ListObjectsRequest.builder()
7979
.bucket(bucket)
80-
.prefix(prefix)
81-
.marker(objectListing.nextMarker());
80+
.prefix(prefix);
8281

83-
if (StringUtils.isNotBlank(delimiter)) listReqBuilder.delimiter(delimiter);
82+
if (StringUtils.isNotBlank(delimiter)) {
83+
// nextMarker() is only published when delimiter is specified.
84+
listReqBuilder.delimiter(delimiter).marker(objectListing.nextMarker());
85+
} else {
86+
String marker = objectListing.contents().get(objectListing.contents().size() - 1).key();
87+
listReqBuilder.marker(marker);
88+
}
8489

8590
objectListing = s3Client.listObjects(listReqBuilder.build());
8691
iterator = createIterator();

0 commit comments

Comments
 (0)