fix(stream-bridge): guarantee END sentinel delivery to prevent resource leaks#1792
Closed
JasonOA888 wants to merge 1 commit into
Closed
fix(stream-bridge): guarantee END sentinel delivery to prevent resource leaks#1792JasonOA888 wants to merge 1 commit into
JasonOA888 wants to merge 1 commit into
Conversation
…ce leaks When the stream bridge queue is full, publish_end() could discard the END sentinel after a 30s timeout. Since subscribe() only exits when it receives END_SENTINEL, losing it causes: - SSE connections to hang indefinitely - _queues[run_id] and _counters[run_id] to never be cleaned up - Accumulating resource leak under sustained load Changes: - publish(): use put_nowait() instead of wait_for() — drops events immediately when queue is full (no 30s stall per dropped event) - publish_end(): retry loop that blocks until queue has space, with periodic warning logs. END sentinel is NEVER dropped. Fixes bytedance#1689
Contributor
Author
|
Closing this PR — the code it modifies no longer exists. The original The current |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #1689
Problem
When the stream bridge queue is full (256 events), discards the END sentinel after a 30s timeout. Since only exits upon receiving , losing it causes:
Root Cause
used the same strategy as . But END sentinel is not a normal event — it is the only way subscribe() knows to exit.
Fix
Testing