[ https://issues.apache.org/jira/browse/KAFKA-5321?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16030703#comment-16030703 ]
Ismael Juma commented on KAFKA-5321: ------------------------------------ [~hachikuji], this was fixed as part of KAFKA-5316, right? > MemoryRecords.filterTo can return corrupt data if output buffer is not large > enough > ----------------------------------------------------------------------------------- > > Key: KAFKA-5321 > URL: https://issues.apache.org/jira/browse/KAFKA-5321 > Project: Kafka > Issue Type: Bug > Components: log > Reporter: Jason Gustafson > Assignee: Jason Gustafson > Priority: Blocker > Fix For: 0.11.0.0 > > > Due to KAFKA-5316, it is possible for a record set to grow during cleaning > and overflow the output buffer allocated for writing. When we reach the > record set which is doomed to overflow the buffer, there are two > possibilities: > 1. No records were removed and the original entry is directly appended to the > log. This results in the overflow reported in KAFKA-5316. > 2. Records were removed and a new record set is built. > Here we are concerned with the latter case.The problem is that the builder > code automatically allocates a new buffer when we reach the end of the > existing buffer and does not reset the position in the original buffer. Since > {{MemoryRecords.filterTo}} continues using the old buffer, this can lead to > data corruption after cleaning (the data left in the overflowed buffer is > garbage). > Note that this issue could get fixed as part of a general solution > KAFKA-5316, but if that seems too risk, we might fix this separately. A > simple solution is to make both paths consistent and ensure that we raise an > exception. -- This message was sent by Atlassian JIRA (v6.3.15#6346)