Call Finished() on broadcasts evicted from B-tree
#323
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.
All broadcasts inserted into the
TransmitLimitedQueue's B-tree data structure are supposed to be unique. If a new broadcast is inserted which happens to collide with a broadcast that is already present in the tree, the new one replaces the old one. This is not supposed to happen. But if a software bug, a cosmic ray or an id-generator rollover results in a collision happening anyway, the replaced broadcast is silently discarded withoutFinish()being called. Consequently, the application may leak resources or otherwise misbehave while it waits forever for a callback that is never invoked.Call
Finished()on broadcasts that have been replaced by a newly-inserted broadcast to mitigate the negative consequences of breaking the interface contract.