@@ -176,6 +176,9 @@ func (c *cache) get(service string) ([]*registry.Service, error) {
176
176
// cache results
177
177
cp := util .Copy (services )
178
178
c .Lock ()
179
+ for _ , s := range services {
180
+ c .updateNodeTTLs (service , s .Nodes )
181
+ }
179
182
c .set (service , services )
180
183
c .Unlock ()
181
184
@@ -210,13 +213,14 @@ func (c *cache) get(service string) ([]*registry.Service, error) {
210
213
func (c * cache ) set (service string , services []* registry.Service ) {
211
214
c .cache [service ] = services
212
215
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 )
220
224
}
221
225
}
222
226
@@ -260,6 +264,7 @@ func (c *cache) update(res *registry.Result) {
260
264
261
265
switch res .Action {
262
266
case "create" , "update" :
267
+ c .updateNodeTTLs (res .Service .Name , res .Service .Nodes )
263
268
if service == nil {
264
269
c .set (res .Service .Name , append (services , res .Service ))
265
270
return
0 commit comments