My Windows 10 gRPC client reports a 'Stream Removed' exception when the
channel has not been used for over an hour. (Not sure why it says 'Stream'
because I am not using a stream!) Here is the exception where port :8091 is
the port on the Windows 10 server. Both the client and the server run as
Windows 10 services (on different computers) and I am using Protobuf 3.12.4
and Grpc 2.30.0
-----------------------------------------------------------------------------------------------
DebugException="Grpc.Core.Internal.CoreErrorDetailException:
{"created":"@1610556972.490000000","description":"Error received from peer
ipv4:192.168.55.4:8091","file":"T:\src\github\grpc\workspace_csharp_ext_windows_x64\src\core\lib\surface\call.cc","file_line":1055,"grpc_message":"Stream
removed","grpc_status":2}"
------------------------------------------------------------------------------------------------
Here is my C# gRPC code (approximately) which creates the client:
ccChannel = new Channel (serverNamePort, ChannelCredentials.Insecure);
ccClient = new cc.Client(ccChannel);
where cc means CreditCard as this is a credit card service. I an using
.Insecure because I encrypt the message myself and only the destination app
which runs on a WebServer beyond the gRPC server decrypts the message. I
believe my architecture is more secure than using TLS 1.3. I only mention
this because some support forums suggest the exception is caused by not
using TLS but I have never seen a definitive resolution.
I have a second test environment where I left the channel idle for 6 hours
and the rpc still worked (but in that case both the client and server were
running on localhost so not really comparing apples-to-apples.) Hence, I
cannot say idleness is the cause unless there is some configurable
difference on the two systems which causes idle channels to be removed on
one but not the other?
For what it's worth the client does report that the channel is 'Ready' just
prior to the exception.
My work-around is to detect the exception on the client and try the call
again - it ALWAYS works the second time.
I wonder if re-using ccChannel & ccClient is part of the cause? Do the
creators of gRPC recommend defining a new channel and client before each
rpc?
--
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 view this discussion on the web visit
https://groups.google.com/d/msgid/grpc-io/685c247f-5977-4c2f-97d1-b0c89abf63adn%40googlegroups.com.