fix(mesh-gateway): remove deregistered service from mesh gateway (#15272)

* fix(mesh-gateway): remove deregistered service from mesh gateway

* changelog

Co-authored-by: Derek Menteer <105233703+hashi-derek@users.noreply.github.com>
Co-authored-by: Evan Culver <eculver@users.noreply.github.com>
This commit is contained in:
cskh 2022-11-07 20:30:15 -05:00 committed by GitHub
parent eee0fb1035
commit 3d2d7a77cb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 0 deletions

3
.changelog/15272.txt Normal file
View File

@ -0,0 +1,3 @@
```release-note:bug
proxycfg(mesh-gateway): Fix issue where deregistered services are not removed from mesh-gateway clusters.
```

View File

@ -258,6 +258,9 @@ func (s *handlerMeshGateway) handleUpdate(ctx context.Context, u UpdateEvent, sn
// Do those endpoints get cleaned up some other way? // Do those endpoints get cleaned up some other way?
delete(snap.MeshGateway.WatchedServices, sid) delete(snap.MeshGateway.WatchedServices, sid)
cancelFn() cancelFn()
// always remove the sid from the ServiceGroups when un-watch the service
delete(snap.MeshGateway.ServiceGroups, sid)
} }
} }
snap.MeshGateway.WatchedServicesSet = true snap.MeshGateway.WatchedServicesSet = true

View File

@ -482,6 +482,10 @@ func (c *ConfigSnapshot) MeshGatewayValidExportedServices() []structs.ServiceNam
continue // not possible continue // not possible
} }
if _, ok := c.MeshGateway.ServiceGroups[svc]; !ok {
continue // unregistered services
}
chain, ok := c.MeshGateway.DiscoveryChain[svc] chain, ok := c.MeshGateway.DiscoveryChain[svc]
if !ok { if !ok {
continue // ignore; not ready continue // ignore; not ready