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] <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, [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] <javascript:>.
>> To post to this group, send email to [email protected]
>> <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 [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/0ab47483-f245-47e8-81d3-dd5c690b180d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.