[
https://issues.apache.org/jira/browse/KAFKA-5307?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jason Gustafson updated KAFKA-5307:
-----------------------------------
Fix Version/s: 0.11.0.0
> Concurrent offset commit on same partition may result in inconsistent cache
> ---------------------------------------------------------------------------
>
> Key: KAFKA-5307
> URL: https://issues.apache.org/jira/browse/KAFKA-5307
> Project: Kafka
> Issue Type: Bug
> Reporter: Jason Gustafson
>
> Consider two concurrent offset commits: the first one at offset A, the second
> at offset B. It is possible for both offsets to be appended to the log before
> either of them had been successfully acknowledged. Currently we maintain in
> the group metadata a collection of pending offset commits, but we only store
> one offset for each partition. When the commit for A is received, we add an
> entry for that partition with A. When the commit for B arrives, we would
> overwrite that value with B. Now two cases where this results in incorrect
> behavior.
> 1. After the callback for A is invoked, we materialize whatever offset is in
> the pending offset collection unconditionally. In this case, we would
> incorrectly materialize B even though it had not been successfully written.
> Later B may fail and we have inconsistent state.
> 2. It could happen that the callback for B is invoked before A. If the result
> was successful, no harm done, but if it failed, then we need to restore A
> since it may still be completed successfully. If it does complete
> successfully, then we'll have inconsistent state again.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)