Jason Gustafson created KAFKA-5307:
--------------------------------------
Summary: 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)