Always call HttpUtility::SendJsonBody() with a boost::asio::yield_context - #10764
Closed
Al2Klimov wants to merge 2 commits into
Closed
Always call HttpUtility::SendJsonBody() with a boost::asio::yield_context#10764Al2Klimov wants to merge 2 commits into
HttpUtility::SendJsonBody() with a boost::asio::yield_context#10764Al2Klimov wants to merge 2 commits into
Conversation
Al2Klimov
force-pushed
the
SendJsonBody-yield_context
branch
from
March 26, 2026 14:45
36ed2d0 to
c56cbaa
Compare
Al2Klimov
force-pushed
the
SendJsonBody-yield_context
branch
3 times, most recently
from
July 1, 2026 12:59
1d14ee6 to
0f9e718
Compare
…context` to respect `l_FlushThreshold` in all messages. Especially `l_FlushThreshold` may now be lowered in the future without re-evaluating all possible responses. Side effect: all HTTP responses use chunked encoding now.
…ng()` not in every `#Flush()`.
Al2Klimov
force-pushed
the
SendJsonBody-yield_context
branch
from
July 1, 2026 13:01
0f9e718 to
7843c64
Compare
Member
|
As you seem to be putting more effort into this one recently:
I'm not immediately convinced if this is a good idea. In particular, all the handlers that make use of chunked encoding so far where checked for patterns that would cause problems with yielding coroutines. In particular: // This is safe.
ObjectLock olock(something);
HttpUtility::SendJsonBody(response, params, result);
// Now it becomes unsafe as `yc` may yield and resume on a different thread,
// but C++ std mutexes must be released on the same thread.
ObjectLock olock(something);
HttpUtility::SendJsonBody(response, params, result, yc);So this change means the same burden for every single handler. Also, chunked encoding also isn't something that we must use just for the sake of it, it's sufficient if handlers that are expected to generate large responses use it. |
Member
Author
|
Damn. |
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.
to respect
l_FlushThresholdin all messages.Especially
l_FlushThresholdmay now be lowered in the future without re-evaluating all possible responses.Side effect: all HTTP responses use chunked encoding now.
By the way...
boost::asio::yield_contextdeeper through the code, but you may want to look at the adjusted unit tests and on my second commit