Consul cannot configure Envoy retry policies and other useful knobs
- Dominant language
- Go
- Stars
- 30.1k
- Forks
- 4.6k
- Avg merge
- 1d 18h
- Merged PRs (30d)
- 39
Description
#### Feature Description
Among many other useful configuration options in Envoy's [route management config](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto), it would be very helpful if Consul could configure the `retry_policy` and `retry_host_predicate` fields. Without configuring these, requests are always retried against the same host regardless of what the reason for the retry was.
Although Consul does helpfully make it possible to configure the retry reason (e.g. `retry-on` in the service-router configuration), retrying the same host every time is unlikely to succeed if the host responded with a gRPC `ResourceExhausted` status.
Being able to use the Previous Hosts Predicate to ensure that failed requests are automatically rerouted would be really helpful.
Note that it's not possible to use property overrides to set these fields, as they're in repeated fields which overrides are unable to edit.
cc @blake, we discussed this in the HangOps slack.
#### Use Case(s)
Consul Service Mesh
Contributor guide
Research direction
Start by tracing Consul Service Mesh's Envoy route-management configuration and how service-router retry-on settings are represented. Review Envoy's route_components.proto fields retry_policy and retry_host_predicate, along with the stated property-override limitation. Done means Consul can configure both fields and use them to select alternate hosts after retries.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- networking
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100