diff --git a/fluss-lake/fluss-lake-paimon/src/main/java/org/apache/fluss/lake/paimon/source/PaimonRecordReader.java b/fluss-lake/fluss-lake-paimon/src/main/java/org/apache/fluss/lake/paimon/source/PaimonRecordReader.java index 3af7467cfa..ffab329f06 100644 --- a/fluss-lake/fluss-lake-paimon/src/main/java/org/apache/fluss/lake/paimon/source/PaimonRecordReader.java +++ b/fluss-lake/fluss-lake-paimon/src/main/java/org/apache/fluss/lake/paimon/source/PaimonRecordReader.java @@ -75,9 +75,20 @@ public PaimonRecordReader( } else { org.apache.paimon.reader.RecordReader recordReader = tableRead.createReader(split.dataSplit()); - iterator = - new PaimonRecordReader.PaimonRowAsFlussRecordIterator( - recordReader.toCloseableIterator(), paimonRowType); + org.apache.paimon.utils.CloseableIterator closeableIterator = + recordReader.toCloseableIterator(); + try { + iterator = + new PaimonRecordReader.PaimonRowAsFlussRecordIterator( + closeableIterator, paimonRowType); + } catch (Throwable t) { + try { + closeableIterator.close(); + } catch (Exception closeException) { + t.addSuppressed(closeException); + } + throw t; + } } }