From 52043830b41a400c4b51ef09a8301eb0e80e2a78 Mon Sep 17 00:00:00 2001 From: Nitya Dhanushkodi Date: Thu, 17 Jun 2021 10:43:33 -0700 Subject: [PATCH 1/2] proxycfg: reference to entry in map should not panic --- .changelog/10423.txt | 3 +++ agent/proxycfg/state.go | 15 +++++---------- 2 files changed, 8 insertions(+), 10 deletions(-) create mode 100644 .changelog/10423.txt diff --git a/.changelog/10423.txt b/.changelog/10423.txt new file mode 100644 index 0000000000..6192dde8f1 --- /dev/null +++ b/.changelog/10423.txt @@ -0,0 +1,3 @@ +```release-note:bug +proxycfg: reference to entry in map should not panic. +``` diff --git a/agent/proxycfg/state.go b/agent/proxycfg/state.go index 65fe1fb78f..ba1a347ad7 100644 --- a/agent/proxycfg/state.go +++ b/agent/proxycfg/state.go @@ -846,8 +846,7 @@ func (s *state) handleUpdateConnectProxy(ctx context.Context, u cache.UpdateEven // Clean up data from services that were not in the update for sn := range snap.ConnectProxy.WatchedUpstreams { - upstream := snap.ConnectProxy.UpstreamConfig[sn] - if upstream.Datacenter != "" && upstream.Datacenter != s.source.Datacenter { + if upstream, ok := snap.ConnectProxy.UpstreamConfig[sn]; ok && upstream.Datacenter != "" && upstream.Datacenter != s.source.Datacenter { continue } if _, ok := seenServices[sn]; !ok { @@ -855,8 +854,7 @@ func (s *state) handleUpdateConnectProxy(ctx context.Context, u cache.UpdateEven } } for sn := range snap.ConnectProxy.WatchedUpstreamEndpoints { - upstream := snap.ConnectProxy.UpstreamConfig[sn] - if upstream.Datacenter != "" && upstream.Datacenter != s.source.Datacenter { + if upstream, ok := snap.ConnectProxy.UpstreamConfig[sn]; ok && upstream.Datacenter != "" && upstream.Datacenter != s.source.Datacenter { continue } if _, ok := seenServices[sn]; !ok { @@ -864,8 +862,7 @@ func (s *state) handleUpdateConnectProxy(ctx context.Context, u cache.UpdateEven } } for sn := range snap.ConnectProxy.WatchedGateways { - upstream := snap.ConnectProxy.UpstreamConfig[sn] - if upstream.Datacenter != "" && upstream.Datacenter != s.source.Datacenter { + if upstream, ok := snap.ConnectProxy.UpstreamConfig[sn]; ok && upstream.Datacenter != "" && upstream.Datacenter != s.source.Datacenter { continue } if _, ok := seenServices[sn]; !ok { @@ -873,8 +870,7 @@ func (s *state) handleUpdateConnectProxy(ctx context.Context, u cache.UpdateEven } } for sn := range snap.ConnectProxy.WatchedGatewayEndpoints { - upstream := snap.ConnectProxy.UpstreamConfig[sn] - if upstream.Datacenter != "" && upstream.Datacenter != s.source.Datacenter { + if upstream, ok := snap.ConnectProxy.UpstreamConfig[sn]; ok && upstream.Datacenter != "" && upstream.Datacenter != s.source.Datacenter { continue } if _, ok := seenServices[sn]; !ok { @@ -882,8 +878,7 @@ func (s *state) handleUpdateConnectProxy(ctx context.Context, u cache.UpdateEven } } for sn, cancelFn := range snap.ConnectProxy.WatchedDiscoveryChains { - upstream := snap.ConnectProxy.UpstreamConfig[sn] - if upstream.Datacenter != "" && upstream.Datacenter != s.source.Datacenter { + if upstream, ok := snap.ConnectProxy.UpstreamConfig[sn]; ok && upstream.Datacenter != "" && upstream.Datacenter != s.source.Datacenter { continue } if _, ok := seenServices[sn]; !ok { From 49d25448b44ed4663dc3fbbfbfc7b6548c743178 Mon Sep 17 00:00:00 2001 From: Nitya Dhanushkodi Date: Thu, 17 Jun 2021 12:06:26 -0700 Subject: [PATCH 2/2] Update .changelog/10423.txt Co-authored-by: Freddy --- .changelog/10423.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changelog/10423.txt b/.changelog/10423.txt index 6192dde8f1..6a47f10a7e 100644 --- a/.changelog/10423.txt +++ b/.changelog/10423.txt @@ -1,3 +1,3 @@ ```release-note:bug -proxycfg: reference to entry in map should not panic. +proxycfg: avoid panic when transparent proxy upstream is added and then removed. ```