func()

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 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
			}
		}
	}()
}