GoogleCloudPlatform / GoogleCloudPlatform/esp-v2
Override stream_idle_timeout setting
- Dominant language
- Go
- Stars
- 307
- Forks
- 185
- Avg merge
- 14h 45m
- Merged PRs (30d)
- 6
Description
I have a collection of grpc microservices running in kubernetes, using ESPv2 as a proxy in front of them to route different grpc services to different bakcend components. One of those grpc services has a method that stream responses. The stream is intended to be long-lived, sending updates to a mobile app. However, after about 120 seconds, the stream gets terminated with a RST_STREAM (grpcurl unhelpfully reports an error code of NO_ERROR). I'm pretty sure the culprit is a timeout in ESPv2/Envoy.
So now I'm trying to change the `stream_idle_timeout` setting in the http connection manager for the listener, but there doesn't seem to be a way to do that.
I tried --stream_idle_timeout, but that results in setting a route idle_timeout (which according to envoy docs is roughly equivalent) in a subset of the routes in the resulting dynamic config. Even though the timeout gets set, the 120-second limit persists.
I tried setting the `deadline` on the backend rules in my `service.json` file, which resulted in route idle_timeouts in a different subset of the routes in the dynamic config. It also doesn't affect the 120-second limit.
I tried using `--envoy_extra_config_yaml` in the ESPv2_ARGS environment variable, but I haven't been able to successfully use that to change the config (validation errors on startup).
What is the best way to manually override the `stream_idle_timeout` setting. If there isn't an easy way to do that, could a command-line option be added?
Contributor guide
Assessment
This issue has not been assessed yet.