You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@paimon.apache.org by lz...@apache.org on 2024/08/16 01:47:45 UTC

(paimon) branch master updated: [core] fix the issue that BinaryExternalMerger spill files may be leaked. (#3975)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 018341e82 [core] fix the issue that BinaryExternalMerger spill files may be leaked. (#3975)
018341e82 is described below

commit 018341e82421284627ccb347de7d56e9d534ac27
Author: liming.1018 <li...@bytedance.com>
AuthorDate: Fri Aug 16 09:47:39 2024 +0800

    [core] fix the issue that BinaryExternalMerger spill files may be leaked. (#3975)
---
 .../paimon/sort/AbstractBinaryExternalMerger.java       | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/paimon-core/src/main/java/org/apache/paimon/sort/AbstractBinaryExternalMerger.java b/paimon-core/src/main/java/org/apache/paimon/sort/AbstractBinaryExternalMerger.java
index e1db28c16..417ec7a20 100644
--- a/paimon-core/src/main/java/org/apache/paimon/sort/AbstractBinaryExternalMerger.java
+++ b/paimon-core/src/main/java/org/apache/paimon/sort/AbstractBinaryExternalMerger.java
@@ -173,7 +173,6 @@ public abstract class AbstractBinaryExternalMerger<Entry> implements Closeable {
         channelManager.addChannel(mergedChannelID);
         ChannelWriterOutputView output = null;
 
-        int numBytesInLastBlock;
         int numBlocksWritten;
         try {
             output =
@@ -191,14 +190,14 @@ public abstract class AbstractBinaryExternalMerger<Entry> implements Closeable {
                 output.getChannel().deleteChannel();
             }
             throw e;
-        }
-
-        // remove, close and delete channels
-        for (FileIOChannel channel : openChannels) {
-            channelManager.removeChannel(channel.getChannelID());
-            try {
-                channel.closeAndDelete();
-            } catch (Throwable ignored) {
+        } finally {
+            // remove, close and delete channels
+            for (FileIOChannel channel : openChannels) {
+                channelManager.removeChannel(channel.getChannelID());
+                try {
+                    channel.closeAndDelete();
+                } catch (Throwable ignored) {
+                }
             }
         }