mirror of
https://github.com/status-im/consul.git
synced 2025-01-10 22:06:20 +00:00
agent: handle nil node services in anti-entropy
This commit is contained in:
parent
7e170b047e
commit
60a6da213f
@ -310,32 +310,34 @@ func (l *localState) setSyncState() error {
|
||||
if err := l.iface.RPC("Health.NodeChecks", &req, &out2); err != nil {
|
||||
return err
|
||||
}
|
||||
services := out1.NodeServices
|
||||
checks := out2.HealthChecks
|
||||
|
||||
l.Lock()
|
||||
defer l.Unlock()
|
||||
|
||||
services := make(map[string]*structs.NodeService)
|
||||
if out1.NodeServices != nil {
|
||||
services = out1.NodeServices.Services
|
||||
}
|
||||
|
||||
for id, _ := range l.services {
|
||||
// If the local service doesn't exist remotely, then sync it
|
||||
if _, ok := services.Services[id]; !ok {
|
||||
if _, ok := services[id]; !ok {
|
||||
l.serviceStatus[id] = syncStatus{inSync: false}
|
||||
}
|
||||
}
|
||||
|
||||
if services != nil {
|
||||
for id, service := range services.Services {
|
||||
// If we don't have the service locally, deregister it
|
||||
existing, ok := l.services[id]
|
||||
if !ok {
|
||||
l.serviceStatus[id] = syncStatus{remoteDelete: true}
|
||||
continue
|
||||
}
|
||||
|
||||
// If our definition is different, we need to update it
|
||||
equal := reflect.DeepEqual(existing, service)
|
||||
l.serviceStatus[id] = syncStatus{inSync: equal}
|
||||
for id, service := range services {
|
||||
// If we don't have the service locally, deregister it
|
||||
existing, ok := l.services[id]
|
||||
if !ok {
|
||||
l.serviceStatus[id] = syncStatus{remoteDelete: true}
|
||||
continue
|
||||
}
|
||||
|
||||
// If our definition is different, we need to update it
|
||||
equal := reflect.DeepEqual(existing, service)
|
||||
l.serviceStatus[id] = syncStatus{inSync: equal}
|
||||
}
|
||||
|
||||
for id, _ := range l.checks {
|
||||
|
Loading…
x
Reference in New Issue
Block a user