From b315d7ce3ff7e0f14de7514f1eb56c7265809376 Mon Sep 17 00:00:00 2001 From: Tiancheng Lan Date: Thu, 16 Jul 2026 10:57:00 +1000 Subject: [PATCH] fallback for truncated ListObjects V1 responses without NextMarker --- .../src/main/java/thredds/filesystem/s3/ControllerS3.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cdm/s3/src/main/java/thredds/filesystem/s3/ControllerS3.java b/cdm/s3/src/main/java/thredds/filesystem/s3/ControllerS3.java index 6cdf4ace41..e64d26c962 100644 --- a/cdm/s3/src/main/java/thredds/filesystem/s3/ControllerS3.java +++ b/cdm/s3/src/main/java/thredds/filesystem/s3/ControllerS3.java @@ -331,6 +331,12 @@ public boolean hasNext() { // The response was truncated. Make a new request using the next continuation token to pick up where we // left off. String continuationToken = useV2 ? responseV2.nextContinuationToken() : responseV1.nextMarker(); + + // OpenStack Swift may omit NextMarker for a truncated V1 response. + // Continue from the final key returned in the current page. + if (!useV2 && continuationToken == null && responseV1.isTruncated() && !objects.isEmpty()) { + continuationToken = objects.get(objects.size() - 1).key(); + } updateObjectList(continuationToken); } }