NPE in GrpcClientFactory when LoadBalancerFactory is set
Uncaught exception in the SynchronizationContext. Panic!
java.lang.NullPointerException: Cannot invoke "io.grpc.LoadBalancer$Factory.newLoadBalancer(io.grpc.LoadBalancer$Helper)" because "this.base" is null
at io.vitess.client.grpc.GrpcClientFactory$VitessLoadBalancer.newLoadBalancer(GrpcClientFactory.java:436)
at io.grpc.internal.AutoConfiguredLoadBalancerFactory$AutoConfiguredLoadBalancer.<init>(AutoConfiguredLoadBalancerFactory.java:96)
at io.grpc.internal.AutoConfiguredLoadBalancerFactory.newLoadBalancer(AutoConfiguredLoadBalancerFactory.java:63)
at io.grpc.internal.ManagedChannelImpl.exitIdleMode(ManagedChannelImpl.java:409)
at io.grpc.internal.ManagedChannelImpl$RealChannel$2.run(ManagedChannelImpl.java:984)
at io.grpc.SynchronizationContext.drain(SynchronizationContext.java:95)
at io.grpc.SynchronizationContext.execute(SynchronizationContext.java:127)
at io.grpc.internal.ManagedChannelImpl$RealChannel.newCall(ManagedChannelImpl.java:981)
at io.vitess.client.grpc.RetryingInterceptor$RetryingCall.start(RetryingInterceptor.java:111)
at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:332)
at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:306)
at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:218)
at io.vitess.proto.grpc.VitessGrpc$VitessFutureStub.execute(VitessGrpc.java:670)
at io.vitess.client.grpc.GrpcClient.execute(GrpcClient.java:114)
at io.vitess.client.VTGateConnection.execute(VTGateConnection.java:102)
Reproduction Steps
Create grpcClientFactory and client as following
var grpcClientFactory = new GrpcClientFactory().setLoadBalancerFactory(LoadBalancerRegistry.getDefaultRegistry().getProvider("round_robin"));
client = grpcClientFactory.create(ctx, vtgateTarget);
If you try to use the client then the NPE will be thrown.
It looks like the bug is in this code https://github.com/vitessio/vitess/blob/main/java/grpc-client/src/main/java/io/vitess/client/grpc/GrpcClientFactory.java#L431
Where the base field is not actually set.
Overview of the Issue
NPE in GrpcClientFactory when LoadBalancerFactory is set
Reproduction Steps
Binary Version
Operating System and Environment details
Log Fragments
No response