Ach, sorry, my bad.
Thanks.

L.

On Monday, August 16, 2021 at 7:57:28 PM UTC+2 Mark D. Roth wrote:

> I am not familiar with java-control-plane, so I can't answer that.  You 
> might try asking in their developer community.
>
> On Mon, Aug 16, 2021 at 10:55 AM Lukáš Drbal <lukas...@gmail.com> wrote:
>
>> Hello Mark,
>>
>> as first thanks a lot for Your replay, it is more clear for me now.
>>
>> Do you have any idea how to distinguish connected clients? I was looking 
>> for some information which I can use but I don't see anything usable in 
>> NodeGroup interface [1]. It provides access just for `Node` protobuf object 
>> but I don't see anything usable there.
>>
>> Any idea or example?
>>
>> Thanks!
>>  
>> [1] 
>> https://github.com/envoyproxy/java-control-plane/blob/main/cache/src/main/java/io/envoyproxy/controlplane/cache/NodeGroup.java
>> On Monday, August 16, 2021 at 7:15:11 PM UTC+2 Mark D. Roth wrote:
>>
>>> The xDS protocol does not require the node information to be sent by the 
>>> client for every request on the stream; the client needs to send it only on 
>>> the first request on the stream.  Quoting this section of the xDS spec 
>>> <https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol#basic-protocol-overview>
>>> :
>>>
>>> Only the first request on a stream is guaranteed to carry the node 
>>>> identifier. The subsequent discovery requests on the same stream may carry 
>>>> an empty node identifier. This holds true regardless of the acceptance of 
>>>> the discovery responses on the same stream. The node identifier should 
>>>> always be identical if present more than once on the stream. It is 
>>>> sufficient to only check the first message for the node identifier as a 
>>>> result.
>>>
>>>
>>> The Java implementation may currently happen to send the node 
>>> information with every request on the stream, but it's not required to do 
>>> that, and your xDS server should not expect that behavior.  I think you 
>>> need to change your xDS server to look at the node information on the first 
>>> request on the stream and store the node.cluster field so that it knows the 
>>> value when it sees subsequent requests on the same stream.
>>>
>>> I hope this information is helpful.
>>>
>>> On Mon, Aug 16, 2021 at 2:30 AM Lukáš Drbal <lukas...@gmail.com> wrote:
>>>
>>>> Hello everyone,
>>>>
>>>> We are trying to setup routing via XDS to our GRPC services. Routing 
>>>> should be based on `node.cluster` information provided from client.
>>>>
>>>> Basically we would like to have 2 groups of GRPC clusters (priority and 
>>>> normal) with same endpoints and choose right one by client `node.cluster` 
>>>> identification.
>>>>
>>>> I have very minimal setup [1] which works absolutely as we expected for 
>>>> java client but doesn't work for C++ (and grpc_cli). Node hashing 
>>>> implementation [2]. This is minimal setup to reproducing this behaviour, 
>>>> regular routing is more complicated.
>>>>
>>>> From log perspective it looks like from C++ xds server receive 
>>>> `node.cluster` information just in first request. 
>>>>
>>>> From java I see cluster in all requests:
>>>> grpc-default-executor-0] INFO org.example.xds.routing.XdsServer - 
>>>> Routing [priority] to priority group. [grpc-default-executor-1] INFO 
>>>> org.example.xds.routing.XdsServer - Routing [priority] to priority group. 
>>>> [grpc-default-executor-1] INFO org.example.xds.routing.XdsServer - Routing 
>>>> [priority] to priority group. [grpc-default-executor-0] INFO 
>>>> org.example.xds.routing.XdsServer - Routing [priority] to priority group. 
>>>> [grpc-default-executor-1] INFO org.example.xds.routing.XdsServer - Routing 
>>>> [priority] to priority group. [grpc-default-executor-2] INFO 
>>>> org.example.xds.routing.XdsServer - Routing [priority] to priority group. 
>>>> [grpc-default-executor-1] INFO org.example.xds.routing.XdsServer - Routing 
>>>> [priority] to priority group. [grpc-default-executor-2] INFO 
>>>> org.example.xds.routing.XdsServer - Routing [priority] to priority group.
>>>>
>>>> But from cli / c++ I see cluster just in first request:
>>>> [grpc-default-executor-0] INFO org.example.xds.routing.XdsServer - 
>>>> Routing [priority] to priority group. [grpc-default-executor-0] INFO 
>>>> org.example.xds.routing.XdsServer - Routing [] to normal group. 
>>>> [grpc-default-executor-0] INFO org.example.xds.routing.XdsServer - Routing 
>>>> [] to normal group.
>>>>
>>>> This leads to expected error when c++ client is trying to get priority 
>>>> listeners and routes from default group.
>>>>
>>>> Can somebody give me any hint what's wrong here?
>>>>
>>>> Thanks a lot!
>>>>
>>>> L.
>>>>
>>>> [1] https://github.com/LesTR/xds-routing-test
>>>> [2] 
>>>> https://github.com/LesTR/xds-routing-test/blob/master/src/main/java/org/example/xds/routing/XdsServer.java#L61
>>>>
>>>> -- 
>>>> 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.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/grpc-io/1de7e140-862f-414f-b25a-7b1afc4069can%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/grpc-io/1de7e140-862f-414f-b25a-7b1afc4069can%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>
>>>
>>> -- 
>>> Mark D. Roth <ro...@google.com>
>>> Software Engineer
>>> Google, Inc.
>>>
>> -- 
>> 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.
>>
> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/grpc-io/19380de0-9db6-4095-a120-ae40c453a9e8n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/grpc-io/19380de0-9db6-4095-a120-ae40c453a9e8n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>
>
> -- 
> Mark D. Roth <ro...@google.com>
> Software Engineer
> Google, Inc.
>

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/568feb74-a056-4397-905f-65730ed8fbf0n%40googlegroups.com.

Reply via email to