Recently, we turned on MAX_CONNECTION_AGE
<https://github.com/grpc/proposal/blob/master/A9-server-side-conn-mgt.md#proposal>
on gRPC server. My understanding is that the server will send GOAWAY with
status code NO_ERROR to the client but don't kill the connection until
MAX_CONNECTION_AGE_GRACE is reached. In response, the client can properly
handle this and continue with the current stream (w/o creating new stream).

We set the former to be 30 minutes and the latter to very long (like a
day). However, we started seeing FlightRuntimeException with
CallStatus=UNAVAILABLE thrown from the client wrapping the underlying
GOAWAY error. It seems to be thrown from FlightStream.java
<https://arrow.apache.org/docs/java/reference/org/apache/arrow/flight/FlightStream.html#next-->
.

My question is, is this how Flight currently handles this type of error? If
so, can it be improved to handle it a better way (e.g., NO_ERROR meaning
the current stream can continue)?

BTW, I haven't dug too much but I don't seem to see this thrown explicitly
in plain gRPC client.

Best,
-- 
Chen Song

Reply via email to