tonic: Server::default(): Set TCP_NODELAY to true; improve docs #2413
+37
−7
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.
Motivation
I recently ran into problems where we accidentally "lost" the tcp_nodelay=true setting, due to refactoring some code to make it easier to test. This caused mysterious 40 ms latency increases. I hope this makes it less likely for others to make this mistake.
Solution
The documentation of the
Server::tcp_nodelay()
function said "Enabled by default", but that was only true when usingServer::builder()
. Thedefault()
method set this to false. To fix this:serve_with_incoming
.tcp_keepalive
already had this note. I added the same documentation totcp_nodelay
and toserve_with_incoming
so it is less likely to be missed.