Github user zentol commented on a diff in the pull request: https://github.com/apache/flink/pull/5563#discussion_r170606282 --- Diff: flink-connectors/flink-connector-filesystem/src/main/java/org/apache/flink/streaming/connectors/fs/AvroKeyValueSinkWriter.java --- @@ -158,7 +158,7 @@ public void open(FileSystem fs, Path path) throws IOException { @Override public void close() throws IOException { - super.close(); //the order is important since super.close flushes inside + flush(); // super.close() also does a flush if (keyValueWriter != null) { --- End diff -- For this issue that would be enough. However we can still leak streams if `open()` throws an exception after `super.open()` returns. Then the stream is already open. If you use the BucketingSink this will leak the stream: ``` // openNewPartFile bucketState.writer.open(fs, inProgressPath); // if this throws exception the stream can be open bucketState.isWriterOpen = true; ``` ``` // closeCurrentPartFile if (bucketState.isWriterOpen) { // not closing partially opened writer bucketState.writer.close(); bucketState.isWriterOpen = false; } ``` So we should modify open() to properly close the stream.
---