...
1syntax = "proto3";
2
3package envoy.config.cluster.v3;
4
5import "envoy/config/core/v3/base.proto";
6import "envoy/type/v3/percent.proto";
7
8import "google/protobuf/wrappers.proto";
9
10import "udpa/annotations/status.proto";
11import "udpa/annotations/versioning.proto";
12import "validate/validate.proto";
13
14option java_package = "io.envoyproxy.envoy.config.cluster.v3";
15option java_outer_classname = "CircuitBreakerProto";
16option java_multiple_files = true;
17option (udpa.annotations.file_status).package_version_status = ACTIVE;
18
19// [#protodoc-title: Circuit breakers]
20
21// :ref:`Circuit breaking<arch_overview_circuit_break>` settings can be
22// specified individually for each defined priority.
23message CircuitBreakers {
24 option (udpa.annotations.versioning).previous_message_type =
25 "envoy.api.v2.cluster.CircuitBreakers";
26
27 // A Thresholds defines CircuitBreaker settings for a
28 // :ref:`RoutingPriority<envoy_api_enum_config.core.v3.RoutingPriority>`.
29 // [#next-free-field: 9]
30 message Thresholds {
31 option (udpa.annotations.versioning).previous_message_type =
32 "envoy.api.v2.cluster.CircuitBreakers.Thresholds";
33
34 message RetryBudget {
35 option (udpa.annotations.versioning).previous_message_type =
36 "envoy.api.v2.cluster.CircuitBreakers.Thresholds.RetryBudget";
37
38 // Specifies the limit on concurrent retries as a percentage of the sum of active requests and
39 // active pending requests. For example, if there are 100 active requests and the
40 // budget_percent is set to 25, there may be 25 active retries.
41 //
42 // This parameter is optional. Defaults to 20%.
43 type.v3.Percent budget_percent = 1;
44
45 // Specifies the minimum retry concurrency allowed for the retry budget. The limit on the
46 // number of active retries may never go below this number.
47 //
48 // This parameter is optional. Defaults to 3.
49 google.protobuf.UInt32Value min_retry_concurrency = 2;
50 }
51
52 // The :ref:`RoutingPriority<envoy_api_enum_config.core.v3.RoutingPriority>`
53 // the specified CircuitBreaker settings apply to.
54 core.v3.RoutingPriority priority = 1 [(validate.rules).enum = {defined_only: true}];
55
56 // The maximum number of connections that Envoy will make to the upstream
57 // cluster. If not specified, the default is 1024.
58 google.protobuf.UInt32Value max_connections = 2;
59
60 // The maximum number of pending requests that Envoy will allow to the
61 // upstream cluster. If not specified, the default is 1024.
62 google.protobuf.UInt32Value max_pending_requests = 3;
63
64 // The maximum number of parallel requests that Envoy will make to the
65 // upstream cluster. If not specified, the default is 1024.
66 google.protobuf.UInt32Value max_requests = 4;
67
68 // The maximum number of parallel retries that Envoy will allow to the
69 // upstream cluster. If not specified, the default is 3.
70 google.protobuf.UInt32Value max_retries = 5;
71
72 // Specifies a limit on concurrent retries in relation to the number of active requests. This
73 // parameter is optional.
74 //
75 // .. note::
76 //
77 // If this field is set, the retry budget will override any configured retry circuit
78 // breaker.
79 RetryBudget retry_budget = 8;
80
81 // If track_remaining is true, then stats will be published that expose
82 // the number of resources remaining until the circuit breakers open. If
83 // not specified, the default is false.
84 //
85 // .. note::
86 //
87 // If a retry budget is used in lieu of the max_retries circuit breaker,
88 // the remaining retry resources remaining will not be tracked.
89 bool track_remaining = 6;
90
91 // The maximum number of connection pools per cluster that Envoy will concurrently support at
92 // once. If not specified, the default is unlimited. Set this for clusters which create a
93 // large number of connection pools. See
94 // :ref:`Circuit Breaking <arch_overview_circuit_break_cluster_maximum_connection_pools>` for
95 // more details.
96 google.protobuf.UInt32Value max_connection_pools = 7;
97 }
98
99 // If multiple :ref:`Thresholds<envoy_api_msg_config.cluster.v3.CircuitBreakers.Thresholds>`
100 // are defined with the same :ref:`RoutingPriority<envoy_api_enum_config.core.v3.RoutingPriority>`,
101 // the first one in the list is used. If no Thresholds is defined for a given
102 // :ref:`RoutingPriority<envoy_api_enum_config.core.v3.RoutingPriority>`, the default values
103 // are used.
104 repeated Thresholds thresholds = 1;
105}
View as plain text