From 5d525701bc2655b9dcd5ce48c89e1e02d0bd4b59 Mon Sep 17 00:00:00 2001 From: Menghan Li Date: Tue, 11 Jan 2022 11:29:43 -0800 Subject: [PATCH 1/2] [cluster_resolver_dns_cluster] xds/clusterresolver: child should have cluster name set even for DNS --- .../balancer/clusterresolver/clusterresolver_test.go | 1 + xds/internal/balancer/clusterresolver/configbuilder.go | 9 ++++++--- .../balancer/clusterresolver/configbuilder_test.go | 7 +++++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/xds/internal/balancer/clusterresolver/clusterresolver_test.go b/xds/internal/balancer/clusterresolver/clusterresolver_test.go index 035188851a1..3b0843f6807 100644 --- a/xds/internal/balancer/clusterresolver/clusterresolver_test.go +++ b/xds/internal/balancer/clusterresolver/clusterresolver_test.go @@ -43,6 +43,7 @@ const ( defaultTestShortTimeout = 10 * time.Millisecond testEDSServcie = "test-eds-service-name" testClusterName = "test-cluster-name" + testClusterName2 = "google_cfe_some-name" ) var ( diff --git a/xds/internal/balancer/clusterresolver/configbuilder.go b/xds/internal/balancer/clusterresolver/configbuilder.go index 1c0c8d0d701..c2404b387b6 100644 --- a/xds/internal/balancer/clusterresolver/configbuilder.go +++ b/xds/internal/balancer/clusterresolver/configbuilder.go @@ -135,7 +135,7 @@ func buildPriorityConfig(priorities []priorityConfig, xdsLBPolicy *internalservi } retAddrs = append(retAddrs, addrs...) case DiscoveryMechanismTypeLogicalDNS: - name, config, addrs := buildClusterImplConfigForDNS(i, p.addresses) + name, config, addrs := buildClusterImplConfigForDNS(i, p.addresses, p.mechanism) retConfig.Priorities = append(retConfig.Priorities, name) retConfig.Children[name] = &priority.Child{ Config: &internalserviceconfig.BalancerConfig{Name: clusterimpl.Name, Config: config}, @@ -149,7 +149,7 @@ func buildPriorityConfig(priorities []priorityConfig, xdsLBPolicy *internalservi return retConfig, retAddrs, nil } -func buildClusterImplConfigForDNS(parentPriority int, addrStrs []string) (string, *clusterimpl.LBConfig, []resolver.Address) { +func buildClusterImplConfigForDNS(parentPriority int, addrStrs []string, mechanism DiscoveryMechanism) (string, *clusterimpl.LBConfig, []resolver.Address) { // Endpoint picking policy for DNS is hardcoded to pick_first. const childPolicy = "pick_first" retAddrs := make([]resolver.Address, 0, len(addrStrs)) @@ -157,7 +157,10 @@ func buildClusterImplConfigForDNS(parentPriority int, addrStrs []string) (string for _, addrStr := range addrStrs { retAddrs = append(retAddrs, hierarchy.Set(resolver.Address{Addr: addrStr}, []string{pName})) } - return pName, &clusterimpl.LBConfig{ChildPolicy: &internalserviceconfig.BalancerConfig{Name: childPolicy}}, retAddrs + return pName, &clusterimpl.LBConfig{ + Cluster: mechanism.Cluster, + ChildPolicy: &internalserviceconfig.BalancerConfig{Name: childPolicy}, + }, retAddrs } // buildClusterImplConfigForEDS returns a list of cluster_impl configs, one for diff --git a/xds/internal/balancer/clusterresolver/configbuilder_test.go b/xds/internal/balancer/clusterresolver/configbuilder_test.go index b56f20fa41b..011500f4bc9 100644 --- a/xds/internal/balancer/clusterresolver/configbuilder_test.go +++ b/xds/internal/balancer/clusterresolver/configbuilder_test.go @@ -199,7 +199,8 @@ func TestBuildPriorityConfig(t *testing.T) { }, { mechanism: DiscoveryMechanism{ - Type: DiscoveryMechanismTypeLogicalDNS, + Cluster: testClusterName2, + Type: DiscoveryMechanismTypeLogicalDNS, }, addresses: testAddressStrs[4], }, @@ -277,6 +278,7 @@ func TestBuildPriorityConfig(t *testing.T) { Config: &internalserviceconfig.BalancerConfig{ Name: clusterimpl.Name, Config: &clusterimpl.LBConfig{ + Cluster: testClusterName2, ChildPolicy: &internalserviceconfig.BalancerConfig{Name: "pick_first"}, }, }, @@ -307,9 +309,10 @@ func TestBuildPriorityConfig(t *testing.T) { } func TestBuildClusterImplConfigForDNS(t *testing.T) { - gotName, gotConfig, gotAddrs := buildClusterImplConfigForDNS(3, testAddressStrs[0]) + gotName, gotConfig, gotAddrs := buildClusterImplConfigForDNS(3, testAddressStrs[0], DiscoveryMechanism{Cluster: testClusterName2, Type: DiscoveryMechanismTypeLogicalDNS}) wantName := "priority-3" wantConfig := &clusterimpl.LBConfig{ + Cluster: testClusterName2, ChildPolicy: &internalserviceconfig.BalancerConfig{ Name: "pick_first", }, From 116b29ea454d2900b0347989f6a72c8a7411ef46 Mon Sep 17 00:00:00 2001 From: Menghan Li Date: Tue, 11 Jan 2022 13:30:18 -0800 Subject: [PATCH 2/2] [cluster_resolver_dns_cluster] also in cds balancer --- xds/internal/balancer/cdsbalancer/cdsbalancer.go | 1 + 1 file changed, 1 insertion(+) diff --git a/xds/internal/balancer/cdsbalancer/cdsbalancer.go b/xds/internal/balancer/cdsbalancer/cdsbalancer.go index 5f898c87918..f1149108507 100644 --- a/xds/internal/balancer/cdsbalancer/cdsbalancer.go +++ b/xds/internal/balancer/cdsbalancer/cdsbalancer.go @@ -328,6 +328,7 @@ func (b *cdsBalancer) handleWatchUpdate(update clusterHandlerUpdate) { case xdsresource.ClusterTypeLogicalDNS: dms[i] = clusterresolver.DiscoveryMechanism{ Type: clusterresolver.DiscoveryMechanismTypeLogicalDNS, + Cluster: cu.ClusterName, DNSHostname: cu.DNSHostName, } default: