From ad73add529ee0d93e60c17eed636bfff72b7ca22 Mon Sep 17 00:00:00 2001 From: Roman Perekhod <2403905@gmail.com> Date: Wed, 16 Jul 2025 08:27:45 +0200 Subject: [PATCH] fix the concurrent map writes error (#2794) --- registry/cache/cache.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/registry/cache/cache.go b/registry/cache/cache.go index d74f820b..9df2d61b 100644 --- a/registry/cache/cache.go +++ b/registry/cache/cache.go @@ -100,7 +100,6 @@ func (c *cache) isValid(services []*registry.Service, ttl time.Time) bool { for _, n := range s.Nodes { nttl := c.nttls[s.Name][n.Id] if time.Since(nttl) > 0 { - delete(c.nttls, s.Name) return false } } @@ -222,6 +221,12 @@ func (c *cache) updateNodeTTLs(name string, nodes []*registry.Node) { for _, node := range nodes { c.nttls[name][node.Id] = time.Now().Add(c.opts.TTL) } + // clean up expired nodes + for nodeId, nttl := range c.nttls[name] { + if time.Since(nttl) > 0 { + delete(c.nttls[name], nodeId) + } + } } func (c *cache) update(res *registry.Result) {