Conversation
The release functionality used before this commit would replace the value in the storage for a given greenlet ident with an empty dictionary, which was problematic as it means the storage would grow with each greenlet used until eventually consisting of many empty dictionaries. The fix is to restore the Werkzeug 1.0 behaviour of poping from the storage instead. Note that stdlib ContextVars (as I understand them) are released when the relevant task completes, and hence assigning an empty dictionary releases references to anything stored whilst in the context as desired (with the dictionary being release when the task completed).
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
The release functionality used before this commit would replace the
value in the storage for a given greenlet ident with an empty
dictionary, which was problematic as it means the storage would grow
with each greenlet used until eventually consisting of many empty
dictionaries. The fix is to restore the Werkzeug 1.0 behaviour of
poping from the storage instead.
Note that stdlib ContextVars (as I understand them) are released when
the relevant task completes, and hence assigning an empty dictionary
releases references to anything stored whilst in the context as
desired (with the dictionary being release when the task completed).
It will be nice when we can drop Python 3.6 and exclusively use the stdlib ContextVars.
Checklist:
CHANGES.rstsummarizing the change and linking to the issue... versionchanged::entries in any relevant code docs.pre-commithooks and fix any issues.pytestandtox, no tests failed.