envoyproxy / envoyproxy/envoy-mobile
core: a proper timeout for big upload requests
- Dominant language
- Java
- Stars
- 566
- Forks
- 85
- PR merge metrics
- No merged PRs in 30d
Description
As it stands now it's tricky - if not impossible - to configure Envoy Mobile timeouts so that they follow _typical expectations_ that mobile engineers tend to have from network requests used to perform _big_ upload requests.
This issue is going to reference Lyft timeout policy but in general, presented scenario should apply to most of the mobile apps.
So at Lyft we have a policy where we want to ensure that each request's retry takes at most 15 seconds. We use [`per_try_idle_timeout`](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto.html#config-route-v3-retrypolicy) to accomplish that - that's great. At the same time we disable `stream_idle_timeout` (by setting it to 0) as some of our requests have potentially unlimited number of retries - whether it's a good idea or not is a separate story.
The issue that we are seeing is that when we try to upload bigger files - let's say 10MBs - our requests continue to fail with `per_try_idle_timeout` timeout. Per the definition of that specific timeout that seems to be an expected behavior.
Now, the question is. Is it possible to configure Envoy Mobile so that it
- ensure that each of requests' retries takes x seconds at most
- does not timeout a given request if it continues to receive bytes from server or continues to send bytes to the server?
Contributor guide
Assessment
This issue has not been assessed yet.