Hi,
I've got a Python server and two clients (Python and C++) running on the same machine (all listening and writing to
127.0.0.1:50051) and I'm hitting the following Python exception on my client:
File "C:\Python27\lib\site-packages\grpc\_channel.py", line 547, in __call__
return _end_unary_response_blocking(state, call, False, None)
File "C:\Python27\lib\site-packages\grpc\_channel.py", line 466, in _end_unary_response_blocking
raise _Rendezvous(state, None, None, deadline)
_Rendezvous: <_Rendezvous of RPC that terminated with:
status = StatusCode.UNKNOWN
details = "Stream removed"
The Python grpc version is 1.17.1
The C++ grpc version is 1.14.1
The execution flow is as follows:
1.- Server starts
2.- Python client starts and creates an insecure_channel on
127.0.0.1:50051. It keeps that channel for the rest of the execution.
Then in a loop:
3.- Python client calls method on Server.
4.- Server runs method and returns.
5.- C++ client starts and creates an insecure_channel on
127.0.0.1:50051. It doesn't communicate with the server.
6.- C++ client finishes so the shared_ptr to the channel created above is released.
7.- Goes back to step 3
I get the exception on step 3/4 above but not every time. It usually happens after 3 or 4 loops from step 3 to step 6. It looks like it's timing dependent.
When I get the exception, the server sometimes has managed to execute the call and sometimes it doesn't receive the request from the Python client.
I've attached server and python client debug traces. The C++ one is a bit trickier to get as it's run as a subprocess and its output is not available but let me know if you need it and I'll try to get it.
My suspicion is that the Python client channel gets corrupted/closed when the C++ client finishes and presumably destroys its channel. Could that be possible?
Please let me know if you need any more info.
Thanks,
Alex.