From ffdf495739b617ffca15bdbb6bcc92e97abbdf74 Mon Sep 17 00:00:00 2001 From: "data-plane-api(CircleCI)" Date: Wed, 23 Oct 2019 04:53:44 +0000 Subject: [PATCH] router: adding a knob to configure a cap on buffering for shadowing/retries (#8574) Signed-off-by: Alyssa Wilk Mirrored from https://github.com/envoyproxy/envoy @ c63c1e83989a10512546d67df44629029d1be23c --- envoy/api/v2/route/route.proto | 14 ++++++++++++-- envoy/api/v3alpha/route/route.proto | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/envoy/api/v2/route/route.proto b/envoy/api/v2/route/route.proto index 118fe852..15a8fc1e 100644 --- a/envoy/api/v2/route/route.proto +++ b/envoy/api/v2/route/route.proto @@ -28,7 +28,7 @@ import "validate/validate.proto"; // host header. This allows a single listener to service multiple top level domain path trees. Once // a virtual host is selected based on the domain, the routes are processed in order to see which // upstream cluster to route to or whether to perform a redirect. -// [#next-free-field: 18] +// [#next-free-field: 19] message VirtualHost { enum TlsRequirementType { // No TLS requirement for the virtual host. @@ -145,6 +145,11 @@ message VirtualHost { // route level entry will take precedence over this config and it'll be treated // independently (e.g.: values are not inherited). HedgePolicy hedge_policy = 17; + + // The maximum bytes which will be buffered for retries and shadowing. + // If set and a route-specific limit is not set, 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 = 18; } // A route is both a specification of how to match a request as well as an indication of what to do @@ -154,7 +159,7 @@ message VirtualHost { // // Envoy supports routing on HTTP method via :ref:`header matching // `. -// [#next-free-field: 16] +// [#next-free-field: 17] message Route { reserved 6; @@ -230,6 +235,11 @@ message Route { // Presence of the object defines whether the connection manager's tracing configuration // is overridden by this route specific instance. Tracing tracing = 15; + + // The maximum bytes which will be buffered for retries and shadowing. + // If set, 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; } // Compared to the :ref:`cluster ` field that specifies a diff --git a/envoy/api/v3alpha/route/route.proto b/envoy/api/v3alpha/route/route.proto index 7650ee28..ac9c4dd7 100644 --- a/envoy/api/v3alpha/route/route.proto +++ b/envoy/api/v3alpha/route/route.proto @@ -28,7 +28,7 @@ import "validate/validate.proto"; // host header. This allows a single listener to service multiple top level domain path trees. Once // a virtual host is selected based on the domain, the routes are processed in order to see which // upstream cluster to route to or whether to perform a redirect. -// [#next-free-field: 18] +// [#next-free-field: 19] message VirtualHost { enum TlsRequirementType { // No TLS requirement for the virtual host. @@ -145,6 +145,11 @@ message VirtualHost { // route level entry will take precedence over this config and it'll be treated // independently (e.g.: values are not inherited). HedgePolicy hedge_policy = 17; + + // The maximum bytes which will be buffered for retries and shadowing. + // If set and a route-specific limit is not set, 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 = 18; } // A route is both a specification of how to match a request as well as an indication of what to do @@ -154,7 +159,7 @@ message VirtualHost { // // Envoy supports routing on HTTP method via :ref:`header matching // `. -// [#next-free-field: 16] +// [#next-free-field: 17] message Route { reserved 6; @@ -230,6 +235,11 @@ message Route { // Presence of the object defines whether the connection manager's tracing configuration // is overridden by this route specific instance. Tracing tracing = 15; + + // The maximum bytes which will be buffered for retries and shadowing. + // If set, 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; } // Compared to the :ref:`cluster ` field that