Steps to reproduce

1. Start server
2. Send a client RPC to server
3. Restart server
4. Using the same client, send another RPC. The call will fail
5. Send another RPC, this call will success

Also I found that if the server is leave stopped for a long time before 
starting up again, the call in step 5 will return "channel is in state 
TRANSIENT_FAILURE" as well.

Example code: https://github.com/whs/grpc-repro
(Install from requirements.txt then run main.py)

Expected result

All call should success.

Tested with Python grpcio==1.19.0 server/client and with go-grpc server. I 
tried 
setting grpc.max_connection_age_grace_ms, grpc.max_connection_age_ms, 
grpc.max_connection_idle_ms, grpc.keepalive_time_ms, 
grpc.keepalive_permit_without_calls 
but they doesn't seems to help.

>From my own investigation, I believe that gRPC channels doesn't drop closed 
channels and tries to send calls in closed channel. There is also TCP RST 
sent.

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/e8465f2b-96f1-4ad1-816f-ee6521595179%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to