Will Droste created KAFKA-4745:
----------------------------------
Summary: KafkaLZ4BlockOutputStream.java incorrectly finishes the
last frame
Key: KAFKA-4745
URL: https://issues.apache.org/jira/browse/KAFKA-4745
Project: Kafka
Issue Type: Bug
Components: compression
Affects Versions: 0.10.1.1
Reporter: Will Droste
There is a scenario where by the delegated OutputStream does not call flush
before close there will be missing data in the stream. The reason for this is
the stream is actually marked close before it is actually flushed.
The end mark is written before the flush, also the writeEndMark was finishing
the stream so its redundant in this context to mark it finished. In my fork the
'finished=true' was removed from the 'writeEndMark' method.
{code}
@Override
public void close() throws IOException {
if (!finished) {
writeEndMark();
flush();
finished = true;
}
if (out != null) {
out.close();
out = null;
}
}
{code}
should be
{code}
@Override
public void close() throws IOException {
if (!finished) {
// finish any pending data
writeBlock();
// write out the end mark
writeEndMark();
// mark the stream as finished
finished = true;
}
if (out != null) {
out.close();
out = null;
}
}
{code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)