in plugins/client/grpc/resolvers/kubernetes_kinds.go [105:131]
func (w *KindCache) watchAndUpdate(ctx context.Context, discoverer discovery.Discoverer) {
ch := make(chan []*targetgroup.Group)
go discoverer.Run(ctx, ch)
w.cache = make(map[string]*targetgroup.Group)
go func() {
for {
select {
case tgs := <-ch:
for _, tg := range tgs {
if tg.Targets == nil || len(tg.Targets) == 0 {
delete(w.cache, tg.Source)
continue
}
w.cache[tg.Source] = tg
// dynamic update addresses
if err := w.UpdateAddresses(); err != nil {
log.Logger.Warnf("dynamic update addresss failure, %v", err)
}
}
case <-ctx.Done():
break
}
}
}()
}