Clients can throw GRPC::Unavailable when the server is restarted
On some occasions, restarting the server causes clients to throw GRPC::Unavailable (14:Endpoint read failed)
. We suspect that is has something to do with the underlying channel of a client stub. Calling channel.connectivity_state(true)
forces the channel to reconnect if it's in IDLE
state, for healthy clients it changes the state to READY
, for unhealthy ones it is always IDLE
.
See also https://gitlab.com/gitlab-org/gitlab-ce/issues/43254.