Merge pull request #800 from kordenlu/master

fix rcache node overwrited issue
This commit is contained in:
Asim Aslam 2019-09-30 07:17:46 +01:00 committed by GitHub
commit 1322fb0d9d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 26 deletions

View File

@ -163,7 +163,7 @@ func (cw *consulWatcher) serviceHandler(idx uint64, data interface{}) {
// it's an update rather than creation // it's an update rather than creation
if len(nodes) > 0 { if len(nodes) > 0 {
delService := oldService delService := registry.CopyService(oldService)
delService.Nodes = nodes delService.Nodes = nodes
cw.next <- &registry.Result{Action: "delete", Service: delService} cw.next <- &registry.Result{Action: "delete", Service: delService}
} }

View File

@ -48,10 +48,8 @@ func delNodes(old, del []*Node) []*Node {
return nodes return nodes
} }
// Copy makes a copy of services // CopyService make a copy of service
func Copy(current []*Service) []*Service { func CopyService(service *Service) *Service {
services := make([]*Service, len(current))
for i, service := range current {
// copy service // copy service
s := new(Service) s := new(Service)
*s = *service *s = *service
@ -73,11 +71,15 @@ func Copy(current []*Service) []*Service {
eps[j] = e eps[j] = e
} }
s.Endpoints = eps s.Endpoints = eps
return s
}
// append service // Copy makes a copy of services
services[i] = s func Copy(current []*Service) []*Service {
services := make([]*Service, len(current))
for i, service := range current {
services[i] = CopyService(service)
} }
return services return services
} }