try {
httpResponse = performRestGet(bucketName, null, parameters, null);
} catch (ServiceException se) {
throw new S3ServiceException(se);
}
ListVersionsResultsHandler handler;
try {
handler = getXmlResponseSaxParser()
.parseListVersionsResponse(
new HttpMethodReleaseInputStream(httpResponse));
ioErrorRetryCount = 0;
} catch (ServiceException se) {
if (se.getCause() instanceof IOException && ioErrorRetryCount < 5) {
ioErrorRetryCount++;
if (log.isWarnEnabled()) {
log.warn("Retrying bucket listing failure due to IO error", se);
}
continue;
} else {
throw new S3ServiceException(se);
}
}
BaseVersionOrDeleteMarker[] partialItems = handler.getItems();
if (log.isDebugEnabled()) {
log.debug("Found " + partialItems.length + " items in one batch");
}
items.addAll(Arrays.asList(partialItems));
String[] partialCommonPrefixes = handler.getCommonPrefixes();
if (log.isDebugEnabled()) {
log.debug("Found " + partialCommonPrefixes.length + " common prefixes in one batch");
}
commonPrefixes.addAll(Arrays.asList(partialCommonPrefixes));
incompleteListing = handler.isListingTruncated();
nextKeyMarker = handler.getNextKeyMarker();
nextVersionIdMarker = handler.getNextVersionIdMarker();
if (incompleteListing) {
if (log.isDebugEnabled()) {
log.debug("Yet to receive complete listing of bucket versions, "
+ "continuing with key-marker=" + nextKeyMarker
+ " and version-id-marker=" + nextVersionIdMarker);