Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
If two cursors independently had retriable errors from a fetch response, they would both trigger the listOrEpoch logic (the other three triggers are two with a stopped session, which avoids the scenario in this commit, and a retry from listOrEpoch, which could also trigger this). If the two failing cursors come from different sources (brokers), they will likely trigger the listOrEpoch logic at different times and may (depending on broker response timings) run handleListOrEpochResults concurrently. The concurrency could cause a race when both results try to modify usingCursors at the same time. To fix this, we just guard the entire handle function with listOrEpochMu. Closes #36.
- Loading branch information