[ https://issues.apache.org/jira/browse/KAFKA-4745?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15902249#comment-15902249 ]
ASF GitHub Bot commented on KAFKA-4745: --------------------------------------- Github user asfgit closed the pull request at: https://github.com/apache/kafka/pull/2528 > 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 > Fix For: 0.10.1.1 > > > 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)