From d374b26b6891255556ab4476f4ce22871219ae76 Mon Sep 17 00:00:00 2001 From: Eric Anderson Date: Mon, 23 Jun 2025 13:19:55 -0700 Subject: [PATCH] xds: Disable LOGICAL_DNS in XdsDepMan until used ClusterResolverLb is still doing DNS itself, so disable it in XdsDepMan until that migration has finished. EDS is fine in XdsDepman, because XdsClient will share the result with ClusterResolverLb. --- .../java/io/grpc/xds/XdsDependencyManager.java | 18 ++++++++++++++---- .../io/grpc/xds/XdsDependencyManagerTest.java | 7 +++++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/xds/src/main/java/io/grpc/xds/XdsDependencyManager.java b/xds/src/main/java/io/grpc/xds/XdsDependencyManager.java index cc419e63a7..5ed3821b7e 100644 --- a/xds/src/main/java/io/grpc/xds/XdsDependencyManager.java +++ b/xds/src/main/java/io/grpc/xds/XdsDependencyManager.java @@ -82,6 +82,9 @@ final class XdsDependencyManager implements XdsConfig.XdsClusterSubscriptionRegi private static final Locality LOGICAL_DNS_CLUSTER_LOCALITY = Locality.create("", "", ""); private static final int MAX_CLUSTER_RECURSION_DEPTH = 16; // Specified by gRFC A37 + + static boolean enableLogicalDns = false; + private final String listenerName; private final XdsClient xdsClient; private final SynchronizationContext syncContext; @@ -363,9 +366,14 @@ final class XdsDependencyManager implements XdsConfig.XdsClusterSubscriptionRegi } break; case LOGICAL_DNS: - TrackedWatcher> dnsWatcher = - tracer.getWatcher(DNS_TYPE, cdsUpdate.dnsHostName()); - child = new EndpointConfig(dnsToEdsUpdate(dnsWatcher.getData(), cdsUpdate.dnsHostName())); + if (enableLogicalDns) { + TrackedWatcher> dnsWatcher = + tracer.getWatcher(DNS_TYPE, cdsUpdate.dnsHostName()); + child = new EndpointConfig(dnsToEdsUpdate(dnsWatcher.getData(), cdsUpdate.dnsHostName())); + } else { + child = new EndpointConfig(StatusOr.fromStatus( + Status.INTERNAL.withDescription("Logical DNS in dependency manager unsupported"))); + } break; default: child = new EndpointConfig(StatusOr.fromStatus(Status.UNAVAILABLE.withDescription( @@ -806,7 +814,9 @@ final class XdsDependencyManager implements XdsConfig.XdsClusterSubscriptionRegi addEdsWatcher(getEdsServiceName()); break; case LOGICAL_DNS: - addDnsWatcher(update.dnsHostName()); + if (enableLogicalDns) { + addDnsWatcher(update.dnsHostName()); + } break; case AGGREGATE: update.prioritizedClusterNames() diff --git a/xds/src/test/java/io/grpc/xds/XdsDependencyManagerTest.java b/xds/src/test/java/io/grpc/xds/XdsDependencyManagerTest.java index 5a897de3a7..fca7b5220e 100644 --- a/xds/src/test/java/io/grpc/xds/XdsDependencyManagerTest.java +++ b/xds/src/test/java/io/grpc/xds/XdsDependencyManagerTest.java @@ -152,6 +152,7 @@ public class XdsDependencyManagerTest { private XdsDependencyManager xdsDependencyManager = new XdsDependencyManager( xdsClient, syncContext, serverName, serverName, nameResolverArgs); + private boolean savedEnableLogicalDns; @Before public void setUp() throws Exception { @@ -168,6 +169,8 @@ public class XdsDependencyManagerTest { testWatcher = new TestWatcher(); xdsConfigWatcher = mock(TestWatcher.class, delegatesTo(testWatcher)); defaultXdsConfig = XdsTestUtils.getDefaultXdsConfig(serverName); + + savedEnableLogicalDns = XdsDependencyManager.enableLogicalDns; } @After @@ -180,6 +183,8 @@ public class XdsDependencyManagerTest { assertThat(adsEnded.get()).isTrue(); assertThat(lrsEnded.get()).isTrue(); assertThat(fakeClock.getPendingTasks()).isEmpty(); + + XdsDependencyManager.enableLogicalDns = savedEnableLogicalDns; } @Test @@ -749,6 +754,7 @@ public class XdsDependencyManagerTest { @Test public void testLogicalDns_success() { + XdsDependencyManager.enableLogicalDns = true; FakeSocketAddress fakeAddress = new FakeSocketAddress(); nameResolverRegistry.register(new FakeNameResolverProvider( "dns:///dns.example.com:1111", fakeAddress)); @@ -789,6 +795,7 @@ public class XdsDependencyManagerTest { @Test public void testLogicalDns_noDnsNr() { + XdsDependencyManager.enableLogicalDns = true; Cluster cluster = Cluster.newBuilder() .setName(CLUSTER_NAME) .setType(Cluster.DiscoveryType.LOGICAL_DNS)