diff --git a/xds/src/main/java/io/grpc/xds/CdsLoadBalancer2.java b/xds/src/main/java/io/grpc/xds/CdsLoadBalancer2.java index 62f2b49249d..6ecceb6f3ec 100644 --- a/xds/src/main/java/io/grpc/xds/CdsLoadBalancer2.java +++ b/xds/src/main/java/io/grpc/xds/CdsLoadBalancer2.java @@ -133,6 +133,9 @@ private void start() { private void shutdown() { root.shutdown(); + if (childLb != null) { + childLb.shutdown(); + } } private void handleClusterDiscovered() { diff --git a/xds/src/test/java/io/grpc/xds/CdsLoadBalancer2Test.java b/xds/src/test/java/io/grpc/xds/CdsLoadBalancer2Test.java index 8957a4e5df8..965bef91d80 100644 --- a/xds/src/test/java/io/grpc/xds/CdsLoadBalancer2Test.java +++ b/xds/src/test/java/io/grpc/xds/CdsLoadBalancer2Test.java @@ -143,6 +143,7 @@ public void tearDown() { loadBalancer.shutdown(); assertThat(xdsClient.watchers).isEmpty(); assertThat(xdsClientRefs).isEqualTo(0); + assertThat(childBalancers).isEmpty(); } @Test