Avoid loading the request stream to retrieve context #8535
Merged
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.
Issue
We are currently loading the flask request for a thread every time we call get_request_context(), even though we might find it in the thread local variable anyway.
This leads to the request streams being read, if you access methods like "get_region_from_request_context`, and the streams not being available anymore.
Solution
Instead of loading both, and then iterating, we will now load while iterating. This means, if the threadlocal request context is set, we will not call
get_flask_request_for_thread
, and therefore not load the request.While this is still implicit, and it is still possibly loading the request into a flask request, it provides a reasonable improvement until we can get rid of the flask context one and for all.