Hi Eric,
Thanks a lot for the reply, actually I do have my custom NameResolver, and upon changes for the server list, NameResolver will be notified. And I do have the RoundRobinLoadBalancer configured, please see code below. ManagedChannel channel = ManagedChannelBuilder.forTarget(...) .executor(channelExecutor) .nameResolverFactory(new Factory() { public NameResolver newNameResolver(URI targetUri, Attributes params) { return new MyCustomNameResolver(*...*); } @Override public String getDefaultScheme() { return null; } }) .loadBalancerFactory(RoundRobinLoadBalancerFactory.getInstance()) .usePlaintext() .enableRetry() .build(); channel.getState(true); On Tuesday, January 15, 2019 at 8:12:16 AM UTC-8, Eric Anderson wrote: > > It looks like you are re-creating channels when the backends change. That > is unfortunate; I would encourage you to instead create a NameResolver that > will provide updated server addresses when they change. That will prevent > needing to shut down perfectly good connections and avoids you having to > deal with many races when swapping out the Channel. > > Are you sure you are using RoundRobin? The last channel would likely only > send RPCs to 9095 if it was using the default PickFirst. > > On Fri, Jan 11, 2019 at 2:43 PM <eleano...@gmail.com <javascript:>> wrote: > >> Hi Kun, >> >> please see below the logs from the gRPC client, so server1 >> (localhost:9095) is running first, then the client start making requests, >> afterward, I started up server2 (localhost:9096), then I see the following >> logs, and the request is not sent to server2. >> >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-12] >> >> Created with target localhost:9095 >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-12] >> >> Created with target localhost:9095 >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-12] >> >> Exiting idle mode >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-12] >> >> Exiting idle mode >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-12] >> >> resolved address: [[addrs=[localhost/127.0.0.1:9095], attrs={}], >> [addrs=[localhost/0:0:0:0:0:0:0:1:9095], attrs={}]], config={} >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-12] >> >> resolved address: [[addrs=[localhost/127.0.0.1:9095], attrs={}], >> [addrs=[localhost/0:0:0:0:0:0:0:1:9095], attrs={}]], config={} >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-12] >> >> io.grpc.internal.InternalSubchannel-14 created for [[addrs=[localhost/ >> 127.0.0.1:9095], attrs={}], [addrs=[localhost/0:0:0:0:0:0:0:1:9095], >> attrs={}]] >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-12] >> >> io.grpc.internal.InternalSubchannel-14 created for [[addrs=[localhost/ >> 127.0.0.1:9095], attrs={}], [addrs=[localhost/0:0:0:0:0:0:0:1:9095], >> attrs={}]] >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-12] >> >> shutdownNow() called >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-12] >> >> shutdownNow() called >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-12] >> >> shutdown() called >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-12] >> >> shutdown() called >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-12] >> >> Shutting down >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-12] >> >> Shutting down >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-16] >> >> Created with target localhost:9096 >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-16] >> >> Created with target localhost:9096 >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-12] >> >> Terminated >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-12] >> >> Terminated >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-16] >> >> Exiting idle mode >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-16] >> >> Exiting idle mode >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-16] >> >> resolved address: [[addrs=[localhost/127.0.0.1:9096], attrs={}], >> [addrs=[localhost/0:0:0:0:0:0:0:1:9096], attrs={}]], config={} >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-16] >> >> resolved address: [[addrs=[localhost/127.0.0.1:9096], attrs={}], >> [addrs=[localhost/0:0:0:0:0:0:0:1:9096], attrs={}]], config={} >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-16] >> >> io.grpc.internal.InternalSubchannel-18 created for [[addrs=[localhost/ >> 127.0.0.1:9096], attrs={}], [addrs=[localhost/0:0:0:0:0:0:0:1:9096], >> attrs={}]] >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-16] >> >> io.grpc.internal.InternalSubchannel-18 created for [[addrs=[localhost/ >> 127.0.0.1:9096], attrs={}], [addrs=[localhost/0:0:0:0:0:0:0:1:9096], >> attrs={}]] >> >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-16] >> >> shutdownNow() called >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-16] >> >> shutdownNow() called >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-16] >> >> shutdown() called >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-16] >> >> shutdown() called >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-16] >> >> Shutting down >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-16] >> >> Shutting down >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-4] >> resolved address: [[addrs=[localhost/127.0.0.1:9095], attrs={}], >> [addrs=[localhost/127.0.0.1:9096], attrs={}]], config={} >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-4] >> resolved address: [[addrs=[localhost/127.0.0.1:9095], attrs={}], >> [addrs=[localhost/127.0.0.1:9096], attrs={}]], config={} >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-4] >> io.grpc.internal.InternalSubchannel-20 created for [[addrs=[localhost/ >> 127.0.0.1:9096], attrs={}]] >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-4] >> io.grpc.internal.InternalSubchannel-20 created for [[addrs=[localhost/ >> 127.0.0.1:9096], attrs={}]] >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-16] >> >> Terminated >> [io.grpc.internal.ManagedChannelImpl][io.grpc.internal.ManagedChannelImpl-16] >> >> Terminated >> >> >> On Thursday, January 10, 2019 at 5:37:55 PM UTC-8, Kun Zhang wrote: >>> >>> SubChannel getting created for the new server means round-robin is aware >>> of this new server and tries to connect. >>> The creation log starts with the logId of the Subchannel. Do you see any >>> other logs related to that logId? >>> My suspicion is that the Subchannel couldn't get connected. >>> >>> On Thursday, January 10, 2019 at 4:34:58 PM UTC-8, eleano...@gmail.com >>> wrote: >>>> >>>> Hi Kun, >>>> >>>> Thanks for your reply, I did see that new SubChannel gets created for >>>> the new server, do you mean that so long as the new server's subchannel >>>> gets created, it should take effect immediately, meaning the new server >>>> should also get the traffic? >>>> >>>> Thanks a lot! >>>> >>>> On Thursday, January 10, 2019 at 4:00:28 PM UTC-8, Kun Zhang wrote: >>>>> >>>>> Can you find logs from InternalSubchannel that mention the new server? >>>>> If the new server can not be connected, round-robin won't use it. >>>>> >>>>> On Wednesday, January 9, 2019 at 10:18:47 AM UTC-8, >>>>> eleano...@gmail.com wrote: >>>>>> >>>>>> Hi, >>>>>> >>>>>> in my java gRPC client, when I create the ManagedChannel, I am >>>>>> passing my custom NameResolver, and using RoundRobinLoadBalancer. When >>>>>> my >>>>>> NameResolver is notified with a change to the server list (new server >>>>>> added), it will call Listener.onAddress and pass the updated the list. >>>>>> >>>>>> I see from the Log: the onAddress is called from >>>>>> NameResolverListenerImpl, (9097 is the new server address added) >>>>>> >>>>>> resolved address: [[addrs=[localhost/127.0.0.1:9096], attrs={}], >>>>>> [addrs=[localhost/127.0.0.1:9097], attrs={}]], config={} >>>>>> >>>>>> >>>>>> however, the traffic is not coming to the new server, did I miss >>>>>> anything? >>>>>> >>>>>> >>>>>> Thanks a lot! >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >> 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 grpc-io+u...@googlegroups.com <javascript:>. >> To post to this group, send email to grp...@googlegroups.com >> <javascript:>. >> Visit this group at https://groups.google.com/group/grpc-io. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/grpc-io/b869c723-3d66-4305-8dd7-80208fc18066%40googlegroups.com >> >> <https://groups.google.com/d/msgid/grpc-io/b869c723-3d66-4305-8dd7-80208fc18066%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > -- 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 grpc-io+unsubscr...@googlegroups.com. To post to this group, send email to grpc-io@googlegroups.com. Visit this group at https://groups.google.com/group/grpc-io. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/0ab47483-f245-47e8-81d3-dd5c690b180d%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.