diff --git a/agent/agent.go b/agent/agent.go index 40f98c585..ddd438a6b 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -1620,8 +1620,8 @@ func (a *Agent) RemoveService(serviceID string, persist bool) error { } // Deregister any associated health checks - for checkID, check := range a.state.Checks() { - if check.ServiceID != serviceID { + for checkID, health := range a.state.Checks() { + if health.ServiceID != serviceID { continue } if err := a.RemoveCheck(checkID, persist); err != nil { @@ -1653,11 +1653,11 @@ func (a *Agent) AddCheck(check *structs.HealthCheck, chkType *structs.CheckType, } if check.ServiceID != "" { - s := a.state.Services()[check.ServiceID] - if s == nil { + svc, ok := a.state.Services()[check.ServiceID] + if !ok { return fmt.Errorf("ServiceID %q does not exist", check.ServiceID) } - check.ServiceName = s.Service + check.ServiceName = svc.Service } a.checkLock.Lock() @@ -2159,11 +2159,12 @@ func (a *Agent) loadServices(conf *config.RuntimeConfig) error { // unloadServices will deregister all services other than the 'consul' service // known to the local agent. func (a *Agent) unloadServices() error { - for id := range a.state.Services() { - if err := a.RemoveService(id, false); err != nil { - return fmt.Errorf("Failed deregistering service '%s': %v", id, err) + for _, service := range a.state.Services() { + if err := a.RemoveService(service.ID, false); err != nil { + return fmt.Errorf("Failed deregistering service '%s': %v", service.ID, err) } } + return nil } @@ -2246,11 +2247,12 @@ func (a *Agent) loadChecks(conf *config.RuntimeConfig) error { // unloadChecks will deregister all checks known to the local agent. func (a *Agent) unloadChecks() error { - for id := range a.state.Checks() { - if err := a.RemoveCheck(id, false); err != nil { - return fmt.Errorf("Failed deregistering check '%s': %s", id, err) + for _, check := range a.state.Checks() { + if err := a.RemoveCheck(check.CheckID, false); err != nil { + return fmt.Errorf("Failed deregistering check '%s': %s", check.CheckID, err) } } + return nil }