Skip to content

Commit e032a6a

Browse files
authored
update ttl for updated nodes only (#2740)
Signed-off-by: Jörn Friedrich Dreyer <[email protected]>
1 parent 14a1791 commit e032a6a

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

registry/cache/cache.go

+12-7
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,9 @@ func (c *cache) get(service string) ([]*registry.Service, error) {
176176
// cache results
177177
cp := util.Copy(services)
178178
c.Lock()
179+
for _, s := range services {
180+
c.updateNodeTTLs(service, s.Nodes)
181+
}
179182
c.set(service, services)
180183
c.Unlock()
181184

@@ -210,13 +213,14 @@ func (c *cache) get(service string) ([]*registry.Service, error) {
210213
func (c *cache) set(service string, services []*registry.Service) {
211214
c.cache[service] = services
212215
c.ttls[service] = time.Now().Add(c.opts.TTL)
213-
for _, s := range services {
214-
for _, n := range s.Nodes {
215-
if c.nttls[s.Name] == nil {
216-
c.nttls[s.Name] = make(map[string]time.Time)
217-
}
218-
c.nttls[s.Name][n.Id] = time.Now().Add(c.opts.TTL)
219-
}
216+
}
217+
218+
func (c *cache) updateNodeTTLs(name string, nodes []*registry.Node) {
219+
if c.nttls[name] == nil {
220+
c.nttls[name] = make(map[string]time.Time)
221+
}
222+
for _, node := range nodes {
223+
c.nttls[name][node.Id] = time.Now().Add(c.opts.TTL)
220224
}
221225
}
222226

@@ -260,6 +264,7 @@ func (c *cache) update(res *registry.Result) {
260264

261265
switch res.Action {
262266
case "create", "update":
267+
c.updateNodeTTLs(res.Service.Name, res.Service.Nodes)
263268
if service == nil {
264269
c.set(res.Service.Name, append(services, res.Service))
265270
return

0 commit comments

Comments
 (0)