hashicorp / hashicorp/consul

Consul cannot configure Envoy retry policies and other useful knobs

Open
#18,710 2 comments 2 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.