in pkg/secrets/watch.go [56:94]
func newWatcher(ctx context.Context, logger log.Logger, client kubernetes.Interface, config *KubernetesSecretConfig) (*secretWatcher, error) {
watcher := &secretWatcher{
refCount: 1,
done: false,
}
err := watcher.start(ctx, client, config)
if err != nil {
_ = logger.Log("msg", "secret watcher failed to start", "err", err, "namespace", config.Namespace, "name", config.Name)
}
started := err == nil
go func() {
if !started {
if ok := watcher.tryRestart(ctx, logger, client, config); !ok {
return
}
}
for {
select {
case e, ok := <-watcher.w.ResultChan():
if ok {
watcher.update(logger, e)
continue
}
if ok := watcher.tryRestart(ctx, logger, client, config); !ok {
return
}
case <-ctx.Done():
// The application shutdown, we don't care about cleaning up.
watcher.close()
return
}
}
}()
return watcher, nil
}