fix: use single cancellation listener in Open AI model #14914
Closed
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.
What it does
Adjusts the
OpenAiModel
to use a single cancellation listener instead of adding a new one for every received chunk. This fixes the warning about a possible emitter memory leak when receiving long responses from the Open AI models.fixes #14902
How to test
Work with any Open AI model. For example use an empty system prompt for
@Universal
and ask it to tell a long story.You should observe that the warnings about a possible emitter leak no longer appear.
Follow-ups
I did check the other model implementations but did not see the same bad pattern used there.
In many places we add a single listener which is not disposed later, but that should be fine as we also don't expect the cancellation token to live forever. It's just that this case was way too extreme, adding a listener per chunk.
Breaking changes
Attribution
Review checklist
Reminder for reviewers