envoyproxy / envoyproxy/envoy-mobile

core: a proper timeout for big upload requests

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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.