diff --git a/sdks/java/io/iceberg/src/main/java/org/apache/beam/sdk/io/iceberg/RecordWriterManager.java b/sdks/java/io/iceberg/src/main/java/org/apache/beam/sdk/io/iceberg/RecordWriterManager.java index 1e25e6b9c234..d5439ad83831 100644 --- a/sdks/java/io/iceberg/src/main/java/org/apache/beam/sdk/io/iceberg/RecordWriterManager.java +++ b/sdks/java/io/iceberg/src/main/java/org/apache/beam/sdk/io/iceberg/RecordWriterManager.java @@ -163,7 +163,10 @@ boolean write(Record record) { @Nullable RecordWriter writer = writers.getIfPresent(routingPartitionKey); if (writer == null && openWriters >= maxNumWriters) { - return false; + writers.cleanUp(); + if (openWriters >= maxNumWriters) { + return false; + } } writer = fetchWriterForPartition(routingPartitionKey, writer); writer.write(record);