diff --git a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/io/HoodieSortedMergeHandle.java b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/io/HoodieSortedMergeHandle.java index 4111abfae..897491b90 100644 --- a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/io/HoodieSortedMergeHandle.java +++ b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/io/HoodieSortedMergeHandle.java @@ -108,8 +108,9 @@ public class HoodieSortedMergeHandle ext @Override public List close() { // write out any pending records (this can happen when inserts are turned into updates) - newRecordKeysSorted.stream().forEach(key -> { + while (!newRecordKeysSorted.isEmpty()) { try { + String key = newRecordKeysSorted.poll(); HoodieRecord hoodieRecord = keyToNewRecords.get(key); if (!writtenRecordKeys.contains(hoodieRecord.getRecordKey())) { if (useWriterSchema) { @@ -122,7 +123,7 @@ public class HoodieSortedMergeHandle ext } catch (IOException e) { throw new HoodieUpsertException("Failed to close UpdateHandle", e); } - }); + } newRecordKeysSorted.clear(); keyToNewRecords.clear();