我们正在使用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一起使用的信息。
我希望这可以帮助你。