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

jinsongzhou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/amoro.git


The following commit(s) were added to refs/heads/master by this push:
     new b3db8b86e [AMORO-3817] Don't close fileIO when cleaning orphan files 
(#3820)
b3db8b86e is described below

commit b3db8b86e3b08c9e97df150b79d63e8a7d4f30c1
Author: Xu Bai <[email protected]>
AuthorDate: Thu Oct 23 16:27:01 2025 +0800

    [AMORO-3817] Don't close fileIO when cleaning orphan files (#3820)
    
    [WAP] Don't close fileIO when cleaning orphan files
---
 .../maintainer/IcebergTableMaintainer.java         | 93 +++++++++++-----------
 1 file changed, 45 insertions(+), 48 deletions(-)

diff --git 
a/amoro-ams/src/main/java/org/apache/amoro/server/optimizing/maintainer/IcebergTableMaintainer.java
 
b/amoro-ams/src/main/java/org/apache/amoro/server/optimizing/maintainer/IcebergTableMaintainer.java
index e30c17ac7..4cf587a97 100644
--- 
a/amoro-ams/src/main/java/org/apache/amoro/server/optimizing/maintainer/IcebergTableMaintainer.java
+++ 
b/amoro-ams/src/main/java/org/apache/amoro/server/optimizing/maintainer/IcebergTableMaintainer.java
@@ -378,30 +378,28 @@ public class IcebergTableMaintainer implements 
TableMaintainer {
     String dataLocation = table.location() + File.separator + DATA_FOLDER_NAME;
     int expected = 0, deleted = 0;
 
-    try (AuthenticatedFileIO io = fileIO()) {
-      // listPrefix will not return the directory and the orphan file clean 
should clean the empty
-      // dir.
-      if (io.supportFileSystemOperations()) {
-        SupportsFileSystemOperations fio = io.asFileSystemIO();
-        Set<PathInfo> directories = new HashSet<>();
-        Set<String> filesToDelete =
-            deleteInvalidFilesInFs(fio, dataLocation, lastTime, exclude, 
directories);
-        expected = filesToDelete.size();
-        deleted = TableFileUtil.deleteFiles(io, filesToDelete);
-        /* delete empty directories */
-        deleteEmptyDirectories(fio, directories, lastTime, exclude);
-      } else if (io.supportPrefixOperations()) {
-        SupportsPrefixOperations pio = io.asPrefixFileIO();
-        Set<String> filesToDelete =
-            deleteInvalidFilesByPrefix(pio, dataLocation, lastTime, exclude);
-        expected = filesToDelete.size();
-        deleted = TableFileUtil.deleteFiles(io, filesToDelete);
-      } else {
-        LOG.warn(
-            String.format(
-                "Table %s doesn't support a fileIo with listDirectory or 
listPrefix, so skip clear files.",
-                table.name()));
-      }
+    AuthenticatedFileIO io = fileIO();
+    // listPrefix will not return the directory and the orphan file clean 
should clean the empty
+    // dir.
+    if (io.supportFileSystemOperations()) {
+      SupportsFileSystemOperations fio = io.asFileSystemIO();
+      Set<PathInfo> directories = new HashSet<>();
+      Set<String> filesToDelete =
+          deleteInvalidFilesInFs(fio, dataLocation, lastTime, exclude, 
directories);
+      expected = filesToDelete.size();
+      deleted = TableFileUtil.deleteFiles(io, filesToDelete);
+      /* delete empty directories */
+      deleteEmptyDirectories(fio, directories, lastTime, exclude);
+    } else if (io.supportPrefixOperations()) {
+      SupportsPrefixOperations pio = io.asPrefixFileIO();
+      Set<String> filesToDelete = deleteInvalidFilesByPrefix(pio, 
dataLocation, lastTime, exclude);
+      expected = filesToDelete.size();
+      deleted = TableFileUtil.deleteFiles(io, filesToDelete);
+    } else {
+      LOG.warn(
+          String.format(
+              "Table %s doesn't support a fileIo with listDirectory or 
listPrefix, so skip clear files.",
+              table.name()));
     }
 
     final int finalExpected = expected;
@@ -430,30 +428,29 @@ public class IcebergTableMaintainer implements 
TableMaintainer {
     String metadataLocation = table.location() + File.separator + 
METADATA_FOLDER_NAME;
     LOG.info("start orphan files clean in {}", metadataLocation);
 
-    try (AuthenticatedFileIO io = fileIO()) {
-      if (io.supportPrefixOperations()) {
-        SupportsPrefixOperations pio = io.asPrefixFileIO();
-        Set<String> filesToDelete =
-            deleteInvalidMetadataFile(
-                pio, metadataLocation, lastTime, validFiles, 
excludeFileNameRegex);
-        int deleted = TableFileUtil.deleteFiles(io, filesToDelete);
-
-        runWithCondition(
-            !filesToDelete.isEmpty(),
-            () -> {
-              LOG.info(
-                  "Deleted {}/{} metadata files for table {}",
-                  deleted,
-                  filesToDelete.size(),
-                  table.name());
-              
orphanFilesCleaningMetrics.completeOrphanMetadataFiles(filesToDelete.size(), 
deleted);
-            });
-      } else {
-        LOG.warn(
-            String.format(
-                "Table %s doesn't support a fileIo with listDirectory or 
listPrefix, so skip clear files.",
-                table.name()));
-      }
+    AuthenticatedFileIO io = fileIO();
+    if (io.supportPrefixOperations()) {
+      SupportsPrefixOperations pio = io.asPrefixFileIO();
+      Set<String> filesToDelete =
+          deleteInvalidMetadataFile(
+              pio, metadataLocation, lastTime, validFiles, 
excludeFileNameRegex);
+      int deleted = TableFileUtil.deleteFiles(io, filesToDelete);
+
+      runWithCondition(
+          !filesToDelete.isEmpty(),
+          () -> {
+            LOG.info(
+                "Deleted {}/{} metadata files for table {}",
+                deleted,
+                filesToDelete.size(),
+                table.name());
+            
orphanFilesCleaningMetrics.completeOrphanMetadataFiles(filesToDelete.size(), 
deleted);
+          });
+    } else {
+      LOG.warn(
+          String.format(
+              "Table %s doesn't support a fileIo with listDirectory or 
listPrefix, so skip clear files.",
+              table.name()));
     }
   }
 

Reply via email to