Fix: Unclosed agentkeepalive connections by improving stream cleanup #1314
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 addresses an issue where streaming responses from the OpenAI API were not closing properly, leading to lingering
AgentKeepAliveconnections that prevented graceful shutdowns of Node.js processes.Changes Made:
_iterSSEMessages(): Explicitly close the stream by callingresponse.body.cancel()in thefinallyblock. This ensures that the body is properly cleaned up, even when the stream completes successfully, not just on errors.finallyblock infromSSEResponse(): The controller is now aborted only if the stream is not already finished. This prevents redundant abortion calls and ensures smooth handling during normal stream completion.ReadableStreamreader in thefinallyblock to ensure the stream is properly closed when the response body is no longer needed. This preventsAgentKeepAlivefrom holding onto connections unnecessarily.Fixes #1311