-
Notifications
You must be signed in to change notification settings - Fork 5.2k
router: adding a knob to configure a cap on buffering for shadowing/retries #8574
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…etries Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
snowp
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me, just one comment
| // limit if another filter increases it. | ||
| buffer_limit_ = callbacks_->decoderBufferLimit(); | ||
| if (callbacks_->decoderBufferLimit() != 0) { | ||
| retry_shadow_buffer_limit_ = callbacks_->decoderBufferLimit(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
its a little bit hard to follow that this limit is set to the buffer limit in the callbacks, then potentially updated in decodeHeaders to account for the retry/shadow limit. Maybe a comment here would help?
| // The maximum bytes which will be buffered for retries and shadowing. | ||
| // The bytes actually buffered will be the minimum value of this and the | ||
| // listener per_connection_buffer_limit_bytes. | ||
| google.protobuf.UInt32Value per_request_buffer_limit_bytes = 16; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would it make sense to have this at multiple levels, e.g. RouteConfiguration and/or VirtualHost. That way, a default can be set that is "safe", without having to do it for every route, and when you have routes with special requirements, e.g. large payloads or streams, we can also override at the route level?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SGTM, done.
snowp
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
mattklein123
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. An integration test would be nice for this at some point if you have time.
|
Oops looks like this needs master merge. /wait |
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
| ConnectionPool::Callbacks& callbacks) -> ConnectionPool::Cancellable* { | ||
| callbacks.onPoolReady(stream_encoder_, cm_.conn_pool_.host_, stream_info_); | ||
| response_decoder_ = &decoder; | ||
| return nullptr; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: extra line
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
|
ugh, still conflicting, and fix_format is broken locally |
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
|
/azp rerun |
|
Command 'rerun' is not supported by Azure Pipelines. Supported commands
See additional documentation. |
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
* master: (54 commits) Update dependencies - Go, Bazel toos, xxHash, nanopb, rules_go, curl, protobuf, Jinja, yaml-cpp, re2 (envoyproxy#8728) test: increase coverage of listener_manager_impl.cc (envoyproxy#8737) test: modify some macros to reduce number of uncovered lines reported (envoyproxy#8725) build: add a script to setup clang (envoyproxy#8682) http: fix ssl_redirect on external (envoyproxy#8664) docs: update fedora build requirements (envoyproxy#8641) fix draining listener removal logs (envoyproxy#8733) dubbo: fix router doc (envoyproxy#8734) server: provide server health status when stats disabled (envoyproxy#8482) router: adding a knob to configure a cap on buffering for shadowing/retries (envoyproxy#8574) tcp proxy: add default 1 hour idle timeout (envoyproxy#8705) thrift: fix filter names in docs (envoyproxy#8726) Quiche changes to avoid gcc flags on Windows (envoyproxy#8514) test: increase test coverage in Router::HeaderParser (envoyproxy#8721) admin: add drain listeners endpoint (envoyproxy#8415) buffer filter: add content-length when ending stream with trailers (envoyproxy#8609) clarify draining option docs (envoyproxy#8712) build: ignore go-control-plane mirror git commit error code (envoyproxy#8703) api: remove API type database from checked in artifacts. (envoyproxy#8716) admin: correct help strings (envoyproxy#8710) ... Signed-off-by: Spencer Lewis <slewis@squareup.com>
…etries (envoyproxy#8574) Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
Risk Level: Medium (refactors to existing router logic)
Testing: new unit tests
Docs Changes: n/a
Release Notes: added