This is an automated email from the ASF dual-hosted git repository.
gavinchou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 4abe299519d [fix](s3) Treat no such key as empty response when listing
objects (part 2) (#60286)
4abe299519d is described below
commit 4abe299519d1348d88b6619763e3572eb8acff09
Author: Gavin Chou <[email protected]>
AuthorDate: Wed Feb 4 23:48:47 2026 +0800
[fix](s3) Treat no such key as empty response when listing objects (part 2)
(#60286)
follow up #60195
---
.../src/main/java/org/apache/doris/fs/obj/S3ObjStorage.java | 12 +++++++++---
.../test/java/org/apache/doris/fs/obj/S3ObjStorageTest.java | 2 +-
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/fs/obj/S3ObjStorage.java
b/fe/fe-core/src/main/java/org/apache/doris/fs/obj/S3ObjStorage.java
index 9cd0c6ea9e5..33694b1a3d8 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/fs/obj/S3ObjStorage.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/fs/obj/S3ObjStorage.java
@@ -182,7 +182,7 @@ public class S3ObjStorage implements ObjStorage<S3Client> {
} while (continuationToken != null);
} catch (NoSuchKeyException e) {
- return new Status(Status.ErrCode.NOT_FOUND, e.getMessage());
+ return Status.OK;
} catch (Exception e) {
return new Status(Status.ErrCode.COMMON_ERROR, e.getMessage());
}
@@ -421,10 +421,12 @@ public class S3ObjStorage implements ObjStorage<S3Client>
{
@Override
public RemoteObjects listObjects(String absolutePath, String
continuationToken) throws DdlException {
+ String bucket = "";
+ String prefix = "";
try {
S3URI uri = S3URI.create(absolutePath, isUsePathStyle,
forceParsingByStandardUri);
- String bucket = uri.getBucket();
- String prefix = uri.getKey();
+ bucket = uri.getBucket();
+ prefix = uri.getKey();
ListObjectsV2Request.Builder requestBuilder =
ListObjectsV2Request.builder()
.bucket(bucket)
.prefix(normalizePrefix(prefix));
@@ -438,6 +440,10 @@ public class S3ObjStorage implements ObjStorage<S3Client> {
remoteObjects.add(new RemoteObject(c.key(), relativePath,
c.eTag(), c.size()));
}
return new RemoteObjects(remoteObjects, response.isTruncated(),
response.nextContinuationToken());
+ } catch (NoSuchKeyException e0) {
+ LOG.info("NoSuchKey error when listing objects, treat as empty
response. bucket={}, prefix={}",
+ bucket, prefix);
+ return new RemoteObjects(new ArrayList<>(), false, "");
} catch (Exception e) {
LOG.warn(String.format("Failed to list objects for S3: %s",
absolutePath), e);
throw new DdlException("Failed to list objects for S3, Error
message: " + Util.getRootCauseMessage(e), e);
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/fs/obj/S3ObjStorageTest.java
b/fe/fe-core/src/test/java/org/apache/doris/fs/obj/S3ObjStorageTest.java
index be95100734b..6ee65e8d288 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/fs/obj/S3ObjStorageTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/fs/obj/S3ObjStorageTest.java
@@ -344,7 +344,7 @@ public class S3ObjStorageTest {
Status status = storage.listFiles("s3://test-bucket/folder/", false,
result);
- Assertions.assertEquals(Status.ErrCode.NOT_FOUND, status.getErrCode());
+ Assertions.assertEquals(Status.ErrCode.OK, status.getErrCode());
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]