This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-4.0 by this push:
     new 6688d880f2b branch-4.0: [fix](s3) Treat no such key as empty response 
when listing objects (part 2) #60286 (#60507)
6688d880f2b is described below

commit 6688d880f2b870c071f0de349ce6c34cc8d85cdf
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Thu Feb 5 09:31:27 2026 +0800

    branch-4.0: [fix](s3) Treat no such key as empty response when listing 
objects (part 2) #60286 (#60507)
    
    Cherry-picked from #60286
    
    Co-authored-by: Gavin Chou <[email protected]>
---
 .../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]

Reply via email to