Microservices grpc给出了;内部:连接因未知原因关闭”;

Microservices grpc给出了;内部:连接因未知原因关闭”;,microservices,grpc,grpc-java,Microservices,Grpc,Grpc Java,我们使用grpc进行微服务间通信。我们使用的是grpc版本:1.2.0。对于一个特定的测试,我们一直从一个微服务中看到这个错误: io.grpc.StatusRuntimeException: INTERNAL: Connection closed with unknown cause at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:141) at io.grpc.stub.ServerCalls$1$1.onHalf

我们使用grpc进行微服务间通信。我们使用的是grpc版本:1.2.0。对于一个特定的测试,我们一直从一个微服务中看到这个错误:

io.grpc.StatusRuntimeException: INTERNAL: Connection closed with unknown cause
at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:141)
at io.grpc.stub.ServerCalls$1$1.onHalfClose(ServerCalls.java:148)
at io.grpc.internal.SerializingExecutor$TaskRunner.run(SerializingExecutor.java:152)
at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:227)
at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:208)
这只发生在最初的几个调用中,或者第一次尝试使用grpc调用另一个微服务的测试中。后续调用使用相同的代码路径成功。所有微服务都已启动并运行


有什么想法吗

至少在我的例子中,这个问题是io.grpc(1.4.0)和io.netty(4.1.27.FINAL)之间的版本不匹配。我不得不在build.gradle文件中将io.netty版本显式设置为4.1.11.FINAL,突然异常消失了

不幸的是,我找不到关于哪个版本的grpc与哪个版本的netty一起工作的任何信息


我希望这对您有所帮助。

如果您在服务器端设置
GRPC\u VERBOSITY=debug
GRPC\u TRACE=all
,您会得到什么?我可以在哪里设置这些?请阅读-总结是,这不是一种解决志愿者问题的理想方式,可能会对获得答案产生反作用。请不要将此添加到您的问题中。gRPC不知道出了什么问题,即使使用调试器,找出问题也可能非常耗时。这个无用的错误应该出现在未来的1.7版本中。除了I/O错误之外,我不知道有任何其他错误会触发它,但我仍然能够自行修复。作为解决方法,我在try-catch块中包围了调用,在catch块中我重试了同一个调用并成功。其余的后续调用也会成功。如何确定连接是否仍处于活动状态,如果未处于活动状态,如何重新建立连接?