fix(): Fix concurrent offset handling in Redis Stream Source Task #56
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
The
RedisStreamSourceTask
was experiencingConcurrentModificationException
during offset commits due to concurrent modification of the offset collection while it was being processed in the stream pipeline. This occurred when multiple threads attempted to modify the offset collection simultaneously during the commit process.Stack trace:
Solution
Implemented thread-safe handling of offsets using concurrent collections:
ConcurrentLinkedQueue
wrapped in anAtomicReference
Key changes:
AtomicReference<ConcurrentLinkedQueue<Map<String, ?>>>
for thread-safe offset storageThis change is fully backwards compatible and requires no configuration changes or external dependency updates.