Return the dead node when deleting the service
This commit is contained in:
parent
998a23c963
commit
1f744b31a4
@ -224,9 +224,14 @@ func (cw *consulWatcher) handle(idx uint64, data interface{}) {
|
|||||||
cw.RUnlock()
|
cw.RUnlock()
|
||||||
|
|
||||||
// remove unknown services from registry
|
// remove unknown services from registry
|
||||||
|
// save the things we want to delete
|
||||||
|
deleted := make(map[string][]*registry.Service)
|
||||||
|
|
||||||
for service, _ := range rservices {
|
for service, _ := range rservices {
|
||||||
if _, ok := services[service]; !ok {
|
if _, ok := services[service]; !ok {
|
||||||
cw.Lock()
|
cw.Lock()
|
||||||
|
// save this before deleting
|
||||||
|
deleted[service] = cw.services[service]
|
||||||
delete(cw.services, service)
|
delete(cw.services, service)
|
||||||
cw.Unlock()
|
cw.Unlock()
|
||||||
}
|
}
|
||||||
@ -237,6 +242,11 @@ func (cw *consulWatcher) handle(idx uint64, data interface{}) {
|
|||||||
if _, ok := services[service]; !ok {
|
if _, ok := services[service]; !ok {
|
||||||
w.Stop()
|
w.Stop()
|
||||||
delete(cw.watchers, service)
|
delete(cw.watchers, service)
|
||||||
|
for _, oldService := range deleted[service] {
|
||||||
|
// send a delete for the service nodes that we're removing
|
||||||
|
cw.next <- ®istry.Result{Action: "delete", Service: oldService}
|
||||||
|
}
|
||||||
|
// sent the empty list as the last resort to indicate to delete the entire service
|
||||||
cw.next <- ®istry.Result{Action: "delete", Service: ®istry.Service{Name: service}}
|
cw.next <- ®istry.Result{Action: "delete", Service: ®istry.Service{Name: service}}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user