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.

Reply via email to