You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Jason Gustafson (JIRA)" <ji...@apache.org> on 2017/05/22 21:19:04 UTC

[jira] [Created] (KAFKA-5307) Concurrent offset commit on same partition may result in inconsistent cache

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)