From 91c08f46d603096aa0eb19ece244aff5a8f642e7 Mon Sep 17 00:00:00 2001 From: Doug Fawley Date: Thu, 10 Jul 2025 15:01:11 -0700 Subject: [PATCH] xds: give up pool lock before closing xdsclient channel, preventing deadlocks with nested xds --- xds/internal/xdsclient/pool.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xds/internal/xdsclient/pool.go b/xds/internal/xdsclient/pool.go index e5a34ae3b..bdfec6ae3 100644 --- a/xds/internal/xdsclient/pool.go +++ b/xds/internal/xdsclient/pool.go @@ -227,7 +227,6 @@ func (p *Pool) clientRefCountedClose(name string) { } delete(p.clients, name) - client.Close() for _, s := range client.bootstrapConfig.XDSServers() { for _, f := range s.Cleanups() { f() @@ -242,6 +241,8 @@ func (p *Pool) clientRefCountedClose(name string) { } p.mu.Unlock() + client.Close() + xdsClientImplCloseHook(name) }