diff --git a/xds/src/main/java/io/grpc/xds/CdsLoadBalancer2.java b/xds/src/main/java/io/grpc/xds/CdsLoadBalancer2.java index 4ba0a32030e..7ee600998d2 100644 --- a/xds/src/main/java/io/grpc/xds/CdsLoadBalancer2.java +++ b/xds/src/main/java/io/grpc/xds/CdsLoadBalancer2.java @@ -129,6 +129,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 b95117acbff..9a3aa2934d6 100644 --- a/xds/src/test/java/io/grpc/xds/CdsLoadBalancer2Test.java +++ b/xds/src/test/java/io/grpc/xds/CdsLoadBalancer2Test.java @@ -139,6 +139,7 @@ public void tearDown() { loadBalancer.shutdown(); assertThat(xdsClient.watchers).isEmpty(); assertThat(xdsClientRefs).isEqualTo(0); + assertThat(childBalancers).isEmpty(); } @Test