You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
WaitForReady configures the action to take when an RPC is attempted on broken connections or unreachable servers. If waitForReady is false and the connection is in the TRANSIENT_FAILURE state, the RPC will fail immediately. Otherwise, the RPC client will block the call until a connection is available (or the call is canceled or times out) and will retry the call if it fails due to a transient error. gRPC will not retry if data was written to the wire unless the server indicates it did not process the data. Please refer to https://github.com/grpc/grpc/blob/master/doc/wait-for-ready.md.
By default, RPCs don't "wait for ready".
When we restart all instances of a service simultaneously, this can bridge the gap, improving availability by returning slow answers rather than erroring because all backends are down (so long as the backends come back before the deadline). However, it also makes some errors harder to diagnose, returning timeouts instead of the underlying error that caused a connection to be bad. Since we now always do graceful rolling restarts, we should remove our setting for this and return to the default, WaitForReady(false).
The text was updated successfully, but these errors were encountered:
Currently we set WaitForReady(true), which causes gRPC requests to not
fail immediately if no backends are available, but instead wait until
the timeout in case a backend does become available. The downside is
that this behavior masks true connection errors. We'd like to turn it
off.
Fixes#6834
Right now we use grpc.WaitForReady(true) in all our RPCs:
When we restart all instances of a service simultaneously, this can bridge the gap, improving availability by returning slow answers rather than erroring because all backends are down (so long as the backends come back before the deadline). However, it also makes some errors harder to diagnose, returning timeouts instead of the underlying error that caused a connection to be bad. Since we now always do graceful rolling restarts, we should remove our setting for this and return to the default,
WaitForReady(false)
.The text was updated successfully, but these errors were encountered: