fix: Fix race conditions in EventStream subscriber management #6904
+414
−45
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.
This PR fixes several issues with subscriber management in EventStream that could cause subscribers to continue receiving events after being unsubscribed.
Problem
The current implementation has several race conditions and thread safety issues:
Solution
This PR adds several improvements:
Changes
Testing
Added several new test cases:
test_subscriber_behavior
: Basic subscriber functionalitytest_subscriber_stress
: Stress testing with rapid subscribe/unsubscribetest_subscriber_unsubscribe_bug
: Specific bug reproductiontest_subscriber_unsubscribe_concurrent
: Concurrent operationstest_subscriber_race_condition
: Race condition testingAll tests pass and demonstrate proper handling of:
Notes
This is a draft PR to get early feedback on the approach. The changes are significant but necessary to fix the underlying issues.
To run this PR locally, use the following command: