Merge pull request #1907 from prometheus/beorn7/sd

retrieval: Clean up target group map on config reload
This commit is contained in:
Björn Rabenstein 2016-08-24 12:00:30 +02:00 committed by GitHub
commit 30cfee81a1
1 changed files with 6 additions and 3 deletions

View File

@ -180,8 +180,7 @@ type targetSet struct {
mtx sync.RWMutex mtx sync.RWMutex
// Sets of targets by a source string that is unique across target providers. // Sets of targets by a source string that is unique across target providers.
tgroups map[string][]*Target tgroups map[string][]*Target
providers map[string]TargetProvider
scrapePool *scrapePool scrapePool *scrapePool
config *config.ScrapeConfig config *config.ScrapeConfig
@ -193,7 +192,6 @@ type targetSet struct {
func newTargetSet(cfg *config.ScrapeConfig, app storage.SampleAppender) *targetSet { func newTargetSet(cfg *config.ScrapeConfig, app storage.SampleAppender) *targetSet {
ts := &targetSet{ ts := &targetSet{
tgroups: map[string][]*Target{},
scrapePool: newScrapePool(cfg, app), scrapePool: newScrapePool(cfg, app),
syncCh: make(chan struct{}, 1), syncCh: make(chan struct{}, 1),
config: cfg, config: cfg,
@ -272,6 +270,11 @@ func (ts *targetSet) runProviders(ctx context.Context, providers map[string]Targ
} }
ctx, ts.cancelProviders = context.WithCancel(ctx) ctx, ts.cancelProviders = context.WithCancel(ctx)
// (Re-)create a fresh tgroups map to not keep stale targets around. We
// will retrieve all targets below anyway, so cleaning up everything is
// safe and doesn't inflict any additional cost.
ts.tgroups = map[string][]*Target{}
for name, prov := range providers { for name, prov := range providers {
wg.Add(1) wg.Add(1)