[
https://issues.apache.org/jira/browse/KAFKA-727?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jay Kreps updated KAFKA-727:
----------------------------
Attachment: KAFKA-727-v1.patch
Patch v1.
1. Snapshot the size of the log prior to translating the maxOffset to a file
position to give a consistent end point.
2. Fix docs on read so they match the code
3. Add a stress test that does reads and writes at the same point to validate
fix
> broker can still expose uncommitted data to a consumer
> ------------------------------------------------------
>
> Key: KAFKA-727
> URL: https://issues.apache.org/jira/browse/KAFKA-727
> Project: Kafka
> Issue Type: Bug
> Components: core
> Affects Versions: 0.8
> Reporter: Jun Rao
> Assignee: Jay Kreps
> Priority: Blocker
> Labels: p1
> Attachments: KAFKA-727-v1.patch
>
>
> Even after kafka-698 is fixed, we still see consumer clients occasionally see
> uncommitted data. The following is how this can happen.
> 1. In Log.read(), we pass in startOffset < HW and maxOffset = HW.
> 2. Then we call LogSegment.read(), in which we call translateOffset on the
> maxOffset. The offset doesn't exist and translateOffset returns null.
> 3. Continue in LogSegment.read(), we then call messageSet.sizeInBytes() to
> fetch and return the data.
> What can happen is that between step 2 and step 3, a new message is appended
> to the log and is not committed yet. Now, we have exposed uncommitted data to
> the client.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira