From d69a4a30cddfb1da473254d6c652009d868f14b9 Mon Sep 17 00:00:00 2001 From: Asim Aslam Date: Fri, 7 Aug 2020 19:58:25 +0100 Subject: [PATCH] fix etcd bug that causes deregister to be skipped (#1911) --- registry/etcd/etcd.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/registry/etcd/etcd.go b/registry/etcd/etcd.go index 94550943..0b8a74c2 100644 --- a/registry/etcd/etcd.go +++ b/registry/etcd/etcd.go @@ -366,9 +366,18 @@ func (e *etcdRegistry) Deregister(s *registry.Service, opts ...registry.Deregist for _, node := range s.Nodes { e.Lock() // delete our hash of the service - delete(e.register, s.Name+node.Id) + nodes, ok := e.register[options.Domain] + if ok { + delete(nodes, s.Name+node.Id) + e.register[options.Domain] = nodes + } + // delete our lease of the service - delete(e.leases, s.Name+node.Id) + leases, ok := e.leases[options.Domain] + if ok { + delete(leases, s.Name+node.Id) + e.leases[options.Domain] = leases + } e.Unlock() ctx, cancel := context.WithTimeout(context.Background(), e.options.Timeout)