MrsGatron 2022-10-26 14:13 采纳率: 50%
浏览 39

关于grpc负载均衡问题/jar包冲突

问题遇到的现象和发生背景

背景:本人22届毕业生一枚,最近公司做grpc负载均衡的有关升级,给了升级步骤文档。目前已经成功升级了两个项目,还剩一个项目出现了非常棘手的报错。

用代码块功能插入代码,请勿粘贴截图
运行结果及报错内容

马赛克位置为连接服务的地址

img

java.lang.AssertionError: io.grpc.ManagedChannelRegistry$ProviderNotFoundException: io.grpc.netty.NettyChannelProvider: does not support 1 or more of [class io.netty.channel.unix.DomainSocketAddress]; io.grpc.okhttp.OkHttpChannelProvider: does not support 1 or more of [class io.netty.channel.unix.DomainSocketAddress]
    at io.grpc.xds.ClientXdsClient$1.uncaughtException(ClientXdsClient.java:207) ~[grpc-xds-1.48.0.jar!/:1.48.0]
    at io.grpc.SynchronizationContext.drain(SynchronizationContext.java:97) [grpc-api-1.48.0.jar!/:1.48.0]
    at io.grpc.SynchronizationContext.execute(SynchronizationContext.java:127) [grpc-api-1.48.0.jar!/:1.48.0]
    at io.grpc.xds.ClientXdsClient.watchLdsResource(ClientXdsClient.java:2134) ~[grpc-xds-1.48.0.jar!/:1.48.0]
    at io.grpc.xds.XdsNameResolver$ResolveState.start(XdsNameResolver.java:759) ~[grpc-xds-1.48.0.jar!/:1.48.0]
    at io.grpc.xds.XdsNameResolver$ResolveState.access$200(XdsNameResolver.java:685) ~[grpc-xds-1.48.0.jar!/:1.48.0]
    at io.grpc.xds.XdsNameResolver.start(XdsNameResolver.java:209) ~[grpc-xds-1.48.0.jar!/:1.48.0]
    at io.grpc.internal.ManagedChannelImpl.exitIdleMode(ManagedChannelImpl.java:418) [grpc-core-1.48.0.jar!/:1.48.0]
    at io.grpc.internal.ManagedChannelImpl$RealChannel$2.run(ManagedChannelImpl.java:980) ~[grpc-core-1.48.0.jar!/:1.48.0]
    at io.grpc.SynchronizationContext.drain(SynchronizationContext.java:95) [grpc-api-1.48.0.jar!/:1.48.0]
    at io.grpc.SynchronizationContext.execute(SynchronizationContext.java:127) [grpc-api-1.48.0.jar!/:1.48.0]
    at io.grpc.internal.ManagedChannelImpl$RealChannel.newCall(ManagedChannelImpl.java:977) [grpc-core-1.48.0.jar!/:1.48.0]
    at io.grpc.internal.ManagedChannelImpl.newCall(ManagedChannelImpl.java:919) [grpc-core-1.48.0.jar!/:1.48.0]
    at io.grpc.internal.ForwardingManagedChannel.newCall(ForwardingManagedChannel.java:63) [grpc-core-1.48.0.jar!/:1.48.0]
    at com.wanfangdata.gateway.interceptor.HeaderClientInterceptor.interceptCall(HeaderClientInterceptor.java:32) [grpc-client-interceptor-starter-1.2022.18.jar!/:1.0-SNAPSHOT]
    at io.grpc.ClientInterceptors$InterceptorChannel.newCall(ClientInterceptors.java:156) [grpc-api-1.48.0.jar!/:1.48.0]
    at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:150) [grpc-stub-1.48.0.jar!/:1.48.0]
    at com.wanfangdata.search.SearchGrpc$SearchBlockingStub.query(SearchGrpc.java:334) [resource-schemas-1.2020.34.jar!/:na]
    at com.wanfangdata.miner.client.SearchClient.search(SearchClient.java:36) [core-1.0-SNAPSHOT.jar!/:1.0-SNAPSHOT]
    at com.wanfangdata.miner.rdd.SolrRDD$SolrRddSelect.select(SolrRDD.java:295) [core-1.0-SNAPSHOT.jar!/:1.0-SNAPSHOT]
    at com.wanfangdata.miner.scholar.ScholarServer.getScholarRelevant(ScholarServer.java:124) [scholar-1.0-SNAPSHOT.jar!/:1.0-SNAPSHOT]
    at com.wanfangdata.miner.scholar.service.ScholarServiceImpl.getScholarRelevant(ScholarServiceImpl.java:46) [scholar-1.0-SNAPSHOT.jar!/:1.0-SNAPSHOT]
    at com.wanfangdata.miner.ScholarGrpc$MethodHandlers.invoke(ScholarGrpc.java:3148) [api-1.0-SNAPSHOT.jar!/:1.0-SNAPSHOT]
    at io.grpc.stub.ServerCalls$UnaryServerCallHandler$UnaryServerCallListener.onHalfClose(ServerCalls.java:182) [grpc-stub-1.48.0.jar!/:1.48.0]
    at io.grpc.PartialForwardingServerCallListener.onHalfClose(PartialForwardingServerCallListener.java:35) [grpc-api-1.48.0.jar!/:1.48.0]
    at io.grpc.ForwardingServerCallListener.onHalfClose(ForwardingServerCallListener.java:23) [grpc-api-1.48.0.jar!/:1.48.0]
    at io.grpc.ForwardingServerCallListener$SimpleForwardingServerCallListener.onHalfClose(ForwardingServerCallListener.java:40) [grpc-api-1.48.0.jar!/:1.48.0]
    at io.grpc.PartialForwardingServerCallListener.onHalfClose(PartialForwardingServerCallListener.java:35) [grpc-api-1.48.0.jar!/:1.48.0]
    at io.grpc.ForwardingServerCallListener.onHalfClose(ForwardingServerCallListener.java:23) [grpc-api-1.48.0.jar!/:1.48.0]
    at io.grpc.ForwardingServerCallListener$SimpleForwardingServerCallListener.onHalfClose(ForwardingServerCallListener.java:40) [grpc-api-1.48.0.jar!/:1.48.0]
    at io.grpc.Contexts$ContextualizedServerCallListener.onHalfClose(Contexts.java:86) [grpc-api-1.48.0.jar!/:1.48.0]
    at io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.halfClosed(ServerCallImpl.java:354) [grpc-core-1.48.0.jar!/:1.48.0]
    at io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1HalfClosed.runInContext(ServerImpl.java:866) [grpc-core-1.48.0.jar!/:1.48.0]
    at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37) [grpc-core-1.48.0.jar!/:1.48.0]
    at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133) [grpc-core-1.48.0.jar!/:1.48.0]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_282]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_282]
    at java.lang.Thread.run(Thread.java:748) [na:1.8.0_282]
Caused by: io.grpc.ManagedChannelRegistry$ProviderNotFoundException: io.grpc.netty.NettyChannelProvider: does not support 1 or more of [class io.netty.channel.unix.DomainSocketAddress]; io.grpc.okhttp.OkHttpChannelProvider: does not support 1 or more of [class io.netty.channel.unix.DomainSocketAddress]
    at io.grpc.ManagedChannelRegistry.newChannelBuilder(ManagedChannelRegistry.java:206) ~[grpc-api-1.48.0.jar!/:1.48.0]
    at io.grpc.ManagedChannelRegistry.newChannelBuilder(ManagedChannelRegistry.java:157) ~[grpc-api-1.48.0.jar!/:1.48.0]
    at io.grpc.Grpc.newChannelBuilder(Grpc.java:101) ~[grpc-api-1.48.0.jar!/:1.48.0]
    at io.grpc.xds.ClientXdsClient$XdsChannelFactory$1.create(ClientXdsClient.java:2731) ~[grpc-xds-1.48.0.jar!/:1.48.0]
    at io.grpc.xds.AbstractXdsClient.<init>(AbstractXdsClient.java:119) ~[grpc-xds-1.48.0.jar!/:1.48.0]
    at io.grpc.xds.ClientXdsClient.maybeCreateXdsChannelWithLrs(ClientXdsClient.java:265) ~[grpc-xds-1.48.0.jar!/:1.48.0]
    at io.grpc.xds.ClientXdsClient.access$2300(ClientXdsClient.java:134) ~[grpc-xds-1.48.0.jar!/:1.48.0]
    at io.grpc.xds.ClientXdsClient$ResourceSubscriber.<init>(ClientXdsClient.java:2469) ~[grpc-xds-1.48.0.jar!/:1.48.0]
    at io.grpc.xds.ClientXdsClient$4.run(ClientXdsClient.java:2140) ~[grpc-xds-1.48.0.jar!/:1.48.0]
    at io.grpc.SynchronizationContext.drain(SynchronizationContext.java:95) [grpc-api-1.48.0.jar!/:1.48.0]
    ... 36 common frames omitted

2022-10-25 14:08:44.187  WARN 7 --- [ault-executor-0] io.grpc.internal.ServerCallImpl          : Cancelling the stream with status Status{code=INTERNAL, description=Completed without a response, cause=null}
Exception in thread "grpc-default-executor-0" java.lang.AssertionError: java.lang.NullPointerException
    at io.grpc.xds.ClientXdsClient$1.uncaughtException(ClientXdsClient.java:207)
    at io.grpc.SynchronizationContext.drain(SynchronizationContext.java:97)
    at io.grpc.SynchronizationContext.execute(SynchronizationContext.java:127)
    at io.grpc.xds.ClientXdsClient.cancelLdsResourceWatch(ClientXdsClient.java:2153)
    at io.grpc.xds.XdsNameResolver$ResolveState.stop(XdsNameResolver.java:766)
    at io.grpc.xds.XdsNameResolver$ResolveState.access$300(XdsNameResolver.java:685)
    at io.grpc.xds.XdsNameResolver.shutdown(XdsNameResolver.java:220)
    at io.grpc.internal.ManagedChannelImpl.shutdownNameResolverAndLoadBalancer(ManagedChannelImpl.java:371)
    at io.grpc.internal.ManagedChannelImpl.panic(ManagedChannelImpl.java:862)
    at io.grpc.internal.ManagedChannelImpl$2.uncaughtException(ManagedChannelImpl.java:186)
    at io.grpc.SynchronizationContext.drain(SynchronizationContext.java:97)
    at io.grpc.SynchronizationContext.execute(SynchronizationContext.java:127)
    at io.grpc.internal.ManagedChannelImpl$RealChannel.newCall(ManagedChannelImpl.java:977)
    at io.grpc.internal.ManagedChannelImpl.newCall(ManagedChannelImpl.java:919)
    at io.grpc.internal.ForwardingManagedChannel.newCall(ForwardingManagedChannel.java:63)
    at com.wanfangdata.gateway.interceptor.HeaderClientInterceptor.interceptCall(HeaderClientInterceptor.java:32)
    at io.grpc.ClientInterceptors$InterceptorChannel.newCall(ClientInterceptors.java:156)
    at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:150)
    at com.wanfangdata.search.SearchGrpc$SearchBlockingStub.query(SearchGrpc.java:334)
    at com.wanfangdata.miner.client.SearchClient.search(SearchClient.java:36)
    at com.wanfangdata.miner.rdd.SolrRDD$SolrRddSelect.select(SolrRDD.java:295)
    at com.wanfangdata.miner.scholar.ScholarServer.getScholarRelevant(ScholarServer.java:124)
    at com.wanfangdata.miner.scholar.service.ScholarServiceImpl.getScholarRelevant(ScholarServiceImpl.java:46)
    at com.wanfangdata.miner.ScholarGrpc$MethodHandlers.invoke(ScholarGrpc.java:3148)
    at io.grpc.stub.ServerCalls$UnaryServerCallHandler$UnaryServerCallListener.onHalfClose(ServerCalls.java:182)
    at io.grpc.PartialForwardingServerCallListener.onHalfClose(PartialForwardingServerCallListener.java:35)
    at io.grpc.ForwardingServerCallListener.onHalfClose(ForwardingServerCallListener.java:23)
    at io.grpc.ForwardingServerCallListener$SimpleForwardingServerCallListener.onHalfClose(ForwardingServerCallListener.java:40)
    at io.grpc.PartialForwardingServerCallListener.onHalfClose(PartialForwardingServerCallListener.java:35)
    at io.grpc.ForwardingServerCallListener.onHalfClose(ForwardingServerCallListener.java:23)
    at io.grpc.ForwardingServerCallListener$SimpleForwardingServerCallListener.onHalfClose(ForwardingServerCallListener.java:40)
    at io.grpc.Contexts$ContextualizedServerCallListener.onHalfClose(Contexts.java:86)
    at io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.halfClosed(ServerCallImpl.java:354)
    at io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1HalfClosed.runInContext(ServerImpl.java:866)
    at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
    at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
    at io.grpc.xds.ClientXdsClient$5.run(ClientXdsClient.java:2157)
    at io.grpc.SynchronizationContext.drain(SynchronizationContext.java:95)
    ... 37 more

我的解答思路和尝试过的方法

我们进行升级的时候,将grpc版本升级到了1.48.0,protobuf的版本升级到了3.21.1,grpc-client-spring-boot-starter升级到了2.12.0,然后引进了xds依赖,项目部署在k8s上,对k8s部署文件也进行了配置。目前前两个项目都顺利配置成功,到了这个项目,无论版本怎么升级,总是报这一个错,本地启动也没问题。does not support 1 or more of [class io.netty.channel.unix.DomainSocketAddress]

经查看,DomainSocketAddress所在的包的版本为4.1.63Final,而已经成功的前两个项目此包的版本为4
.1.58Final,但同样都是将grpc版本升级到了1.48,也没指定过这个包的版本,不知道为什么自动引入了4.1.63,而不是58版本。是否跟这里有关系呢?

我想要达到的结果

请问有没有人帮忙指点一下~万分感谢!!

  • 写回答

2条回答 默认 最新

  • BCS-点心 2022-10-26 15:10
    关注

    如果你将包版本指定为4.1.58Final后问题解决了,那大概率就是因为版本原因了
    至于为什么会使用4.1.63Final版本,可能是某个地方的配置影响的吧

    评论

报告相同问题?

问题事件

  • 创建了问题 10月26日

悬赏问题

  • ¥15 做一个简单项目,用Python分析共享单车的数据
  • ¥20 在使用CESM2.2.0模型进行case.submit过程中出现如下错误(关键词-Map)
  • ¥15 有办法改变通过wifi进入的网站的设置吗
  • ¥15 所以到底怎么算!算到凌晨五点都算不出来!
  • ¥15 label_studio
  • ¥15 请教如何phython发邮件
  • ¥15 linux系统安装问题
  • ¥15 路径规划如何采用矢量法让他们尽量在一个方向
  • ¥15 crypto 一道rsa解密题
  • ¥15 survIDINRI已将生存时间转为数值变量,仍错误 Time variable is not numeric。