diff --git a/discovery/manager.go b/discovery/manager.go index 3219117d2a..9a532f31f0 100644 --- a/discovery/manager.go +++ b/discovery/manager.go @@ -350,8 +350,10 @@ func (m *Manager) updater(ctx context.Context, p *Provider, updates chan []*targ func (m *Manager) sender() { ticker := time.NewTicker(m.updatert) - defer ticker.Stop() - + defer func() { + ticker.Stop() + close(m.syncCh) + }() for { select { case <-m.ctx.Done(): diff --git a/notifier/notifier.go b/notifier/notifier.go index 153c1039f8..09015921b5 100644 --- a/notifier/notifier.go +++ b/notifier/notifier.go @@ -380,7 +380,10 @@ func (n *Manager) targetUpdateLoop(tsets <-chan map[string][]*targetgroup.Group) select { case <-n.stopRequested: return - case ts := <-tsets: + case ts, ok := <-tsets: + if !ok { + break + } n.reload(ts) } } diff --git a/scrape/manager.go b/scrape/manager.go index 5ef5dccb99..75b693dc84 100644 --- a/scrape/manager.go +++ b/scrape/manager.go @@ -122,7 +122,10 @@ func (m *Manager) Run(tsets <-chan map[string][]*targetgroup.Group) error { go m.reloader() for { select { - case ts := <-tsets: + case ts, ok := <-tsets: + if !ok { + break + } m.updateTsets(ts) select {