From 5f87e9c917faa3f7d1d8b8d3f73f569e83d7bc2d Mon Sep 17 00:00:00 2001 From: Boris Schrijver Date: Mon, 3 Aug 2015 17:10:05 +0200 Subject: [PATCH] CLOUDSTACK-8703: Fixed issue when listing directory on S3, it would only return objectSummaries when the anwser from the S3 System was truncated. --- utils/src/com/cloud/utils/S3Utils.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/utils/src/com/cloud/utils/S3Utils.java b/utils/src/com/cloud/utils/S3Utils.java index fc8a3cc17c9..e8653a609af 100644 --- a/utils/src/com/cloud/utils/S3Utils.java +++ b/utils/src/com/cloud/utils/S3Utils.java @@ -352,10 +352,15 @@ public final class S3Utils { ListObjectsRequest listObjectsRequest = new ListObjectsRequest().withBucketName(bucketName).withPrefix(directory + SEPARATOR); ObjectListing ol = client.listObjects(listObjectsRequest); - while (ol != null && ol.isTruncated()) { + if(ol.isTruncated()) { + do { + objects.addAll(ol.getObjectSummaries()); + listObjectsRequest.setMarker(ol.getNextMarker()); + ol = client.listObjects(listObjectsRequest); + } while (ol.isTruncated()); + } + else { objects.addAll(ol.getObjectSummaries()); - listObjectsRequest.setMarker(ol.getNextMarker()); - ol = client.listObjects(listObjectsRequest); } if (objects.isEmpty()) {