diff --git a/discovery/manager.go b/discovery/manager.go index cb08e6b543..51a46ca231 100644 --- a/discovery/manager.go +++ b/discovery/manager.go @@ -365,8 +365,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/manager.go b/notifier/manager.go index 69ce9b221b..c9463b24a8 100644 --- a/notifier/manager.go +++ b/notifier/manager.go @@ -254,7 +254,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 7ffce2f38d..c2da455858 100644 --- a/scrape/manager.go +++ b/scrape/manager.go @@ -127,7 +127,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 {