From 72a81cfc4a70a2fe8a9113adf0db6a3f83c1ba08 Mon Sep 17 00:00:00 2001 From: "R.B. Boyer" <4903+rboyer@users.noreply.github.com> Date: Mon, 13 Dec 2021 15:56:17 -0600 Subject: [PATCH] proxycfg: ensure all of the watches are canceled if they are cancelable (#11824) --- .changelog/11824.txt | 3 +++ agent/proxycfg/connect_proxy.go | 10 ++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 .changelog/11824.txt diff --git a/.changelog/11824.txt b/.changelog/11824.txt new file mode 100644 index 000000000..2109b842f --- /dev/null +++ b/.changelog/11824.txt @@ -0,0 +1,3 @@ +```release-note:bug +proxycfg: ensure all of the watches are canceled if they are cancelable +``` diff --git a/agent/proxycfg/connect_proxy.go b/agent/proxycfg/connect_proxy.go index 39509a989..00b57aad4 100644 --- a/agent/proxycfg/connect_proxy.go +++ b/agent/proxycfg/connect_proxy.go @@ -273,11 +273,14 @@ func (s *handlerConnectProxy) handleUpdate(ctx context.Context, u cache.UpdateEv } // Clean up data from services that were not in the update - for sn := range snap.ConnectProxy.WatchedUpstreams { + for sn, targets := range snap.ConnectProxy.WatchedUpstreams { if upstream, ok := snap.ConnectProxy.UpstreamConfig[sn]; ok && upstream.Datacenter != "" && upstream.Datacenter != s.source.Datacenter { continue } if _, ok := seenServices[sn]; !ok { + for _, cancelFn := range targets { + cancelFn() + } delete(snap.ConnectProxy.WatchedUpstreams, sn) } } @@ -289,11 +292,14 @@ func (s *handlerConnectProxy) handleUpdate(ctx context.Context, u cache.UpdateEv delete(snap.ConnectProxy.WatchedUpstreamEndpoints, sn) } } - for sn := range snap.ConnectProxy.WatchedGateways { + for sn, cancelMap := range snap.ConnectProxy.WatchedGateways { if upstream, ok := snap.ConnectProxy.UpstreamConfig[sn]; ok && upstream.Datacenter != "" && upstream.Datacenter != s.source.Datacenter { continue } if _, ok := seenServices[sn]; !ok { + for _, cancelFn := range cancelMap { + cancelFn() + } delete(snap.ConnectProxy.WatchedGateways, sn) } }