Thanks for stopping by to let us know something could be better!
PLEASE READ: If you have a support contract with Google, please create an issue in the support console instead of filing on GitHub. This will ensure a timely response.
Is your feature request related to a problem? Please describe.
For a server streaming api, there are 4 conceptual timeouts:
overall operation timeout - the maximum amount time that passes from the user invoking a method until that method exits
attempt/rpc timeout - if retries are enabled the maximum amount of time that passes for each attempt in an operation
message wait timeout - the maximum amount of time to wait for the next message from the server
idle timeout - how long to wait before considering the stream orphaned by the user and closing it
Each has a usecase:
operation timeout is useful for users to fulfill their own slo guarantees
attempt timeout are useful when a client developer knows the absolute limit of an rpc but that limit happens to be shorter than the required slo for a customer. For example a point read of a bigtable key shouldnt ever take more than 100ms. If it does, then we can assume something is wrong (GFE died without sending a FIN packet) and abort the request and retry.
message wait timeouts have a similar use as attempt timeouts with tighter guarantees
idle timeouts are useful to reduce buffer bloat on the server
Currently all of them are implemented in gax but the delineation was muddied by me a while back. This PR tries to fix the situation. In the current world, operation timeout is defined by RetrySettings#totalTimeout, idle timeout is defined by ServerStreamingCallSettings#idleTimeout. However RetrySettings#rpcTimeout is mapped to message wait timeout and attempt timeout is only configureable per call using ApiCallContext#withTimeout.
Thanks for stopping by to let us know something could be better!
PLEASE READ: If you have a support contract with Google, please create an issue in the support console instead of filing on GitHub. This will ensure a timely response.
Is your feature request related to a problem? Please describe. For a server streaming api, there are 4 conceptual timeouts:
Each has a usecase:
Describe the solution you'd like https://github.com/googleapis/gapic-generator-java/pull/1473 but backward compatible