Gabor Somogyi created FLINK-36124:
-------------------------------------
Summary: S3RecoverableFsDataOutputStream.sync closes the stream
and further write operation throw exception
Key: FLINK-36124
URL: https://issues.apache.org/jira/browse/FLINK-36124
Project: Flink
Issue Type: Bug
Components: Connectors / AWS
Affects Versions: 2.0.0
Reporter: Gabor Somogyi
This behaviour is introduced in FLINK-28513.
Rationale why I think it's a bug:
* `sync` method is defined in `FSDataOutputStream` with the following
definition:
{code:java}
/**
* Flushes the data all the way to the persistent non-volatile storage (for
example disks). The
* method behaves similar to the <i>fsync</i> function, forcing all data to
be persistent on the
* devices.
*
* @throws IOException Thrown if an I/O error occurs
*/
{code}
* In case `sync` method call user of the writer instance is expected to call
further `write` methods
* What is actually happening it's blowing up the next write with the following
exception:
{code:java}
java.io.IOException: Stream closed.
at
org.apache.flink.core.fs.RefCountedFileWithStream.requireOpened(RefCountedFileWithStream.java:72)
at
org.apache.flink.core.fs.RefCountedFileWithStream.write(RefCountedFileWithStream.java:52)
at
org.apache.flink.core.fs.RefCountedBufferingFileStream.flush(RefCountedBufferingFileStream.java:104)
at
org.apache.flink.core.fs.RefCountedBufferingFileStream.write(RefCountedBufferingFileStream.java:87)
at
org.apache.flink.fs.s3.common.writer.S3RecoverableFsDataOutputStream.write(S3RecoverableFsDataOutputStream.java:112)
at java.base/java.io.OutputStream.write(OutputStream.java:122)
{code}
* This can be super easily tested with
`S3RecoverableFsDataOutputStreamTest.testSync`. Please remove the `expected =
Exception.class` from the beginning of the test.
* The following line in the test is testing nothing because never ever called:
https://github.com/apache/flink/blob/56c81995d3b34ed9066b6771755407b93438f5ab/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/writer/S3RecoverableFsDataOutputStreamTest.java#L264
--
This message was sent by Atlassian Jira
(v8.20.10#820010)