Hi Eric, 

one more question, when the subchannel gets updated from a channel, how 
about the Streams that is created from the channel? I assume that the 
stream is for a particular tcp connection, meaning a particular subchannel?

On Tuesday, January 15, 2019 at 10:04:09 AM UTC-8, [email protected] 
wrote:
>
> 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 <[email protected]> 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, [email protected] 
>>>> 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, 
>>>>>> [email protected] 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 [email protected].
>>> To post to this group, send email to [email protected].
>>> 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 [email protected].
To post to this group, send email to [email protected].
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/d37ac5d0-b88a-49fe-aae6-ec3717ba5b37%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to