Skip to content

Commit

Permalink
Merge pull request #10873 from hashicorp/b-cc-rm-sidecar-first
Browse files Browse the repository at this point in the history
consul/connect: remove sidecar proxy before removing parent service
  • Loading branch information
shoenig authored Jul 8, 2021
2 parents 72f431f + 8ad8e10 commit 0e49f0d
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
3 changes: 3 additions & 0 deletions .changelog/10873.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:bug
consul/connect: Fixed a bug where service deregistered before connect sidecar
```
17 changes: 16 additions & 1 deletion command/agent/consul/service_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -821,8 +821,23 @@ func (c *ServiceClient) sync(reason syncReason) error {
continue
}

// Unknown Nomad managed service; kill
// Get the Consul namespace this service is in.
ns := servicesInConsul[id].Namespace

// If this service has a sidecar, we need to remove the sidecar first,
// otherwise Consul will produce a warning and an error when removing
// the parent service.
//
// The sidecar is not tracked on the Nomad side; it was registered
// implicitly through the parent service.
if sidecar := getNomadSidecar(id, servicesInConsul); sidecar != nil {
if err := c.agentAPI.ServiceDeregisterOpts(sidecar.ID, &api.QueryOptions{Namespace: ns}); err != nil {
metrics.IncrCounter([]string{"client", "consul", "sync_failure"}, 1)
return err
}
}

// Remove the unwanted service.
if err := c.agentAPI.ServiceDeregisterOpts(id, &api.QueryOptions{Namespace: ns}); err != nil {
if isOldNomadService(id) {
// Don't hard-fail on old entries. See #3620
Expand Down

0 comments on commit 0e49f0d

Please sign in to comment.