-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
circuit breaking: Change max_requests to work for both HTTP/1 and HTTP/2 #9215
Comments
+1 we should fix this. It has been a longstanding source of confusion. We definitely need to runtime guard this and probably initially default to off. cc @alyssawilk |
Also related to #7403 in which we would optimally like to unify the H1 and H2 connection pool implementations as much as possible. |
Drive-by comment: This makes sense to me; a related idea after reading this: The h2 pool implementation currently implies this, but once it supports multiple connections, perhaps a new |
The combination of H1 and H2 conn_pool implementations makes `max_requests` to work for both H1 and H2 in Envoy proxy (envoyproxy/envoy#9215). In accordance with this change, this patch updated the field `http2MaxRequests` of `ConnectionPoolSettings.HTTPSettings` in DestinationRule API to `maxRequests` to resolve the outdated H1 only implications/misunderstandings for the field. Addresses istio/istio#27473 Signed-off-by: Kailun Qin <[email protected]>
The current way circuit breakers are used to limit outstanding requests involves using
max_requests
for HTTP/2 andmax_connections
for HTTP/1. This is unintuitive and and requires special handling for code that requires knowledge of the number of outstanding requests (such as retry budgets).I'd like to propose altering the way we increment outstanding requests in the per-cluster resource managers to track requests between both HTTPs. This would allow users to simply set
max_requests
circuit breaker values and be agnostic to the HTTP version.This is particularly risky because it's a subtle change in behavior for widely used parameters. Hiding this behavior behind a feature flag would certainly be necessary, but I'll defer to maintainers/community on the best approach to making a change like this (if it's desired).
The text was updated successfully, but these errors were encountered: