retrieval: don't sync to uninitialized scrape pool
This change does just signal a scrape target update to the scraping loop once an initial target set is fetched. Before, the scrape pool was directly synced, causing a race against an uninitialized scrape pool. Fixes #1703
This commit is contained in:
parent
43a36e545b
commit
d0eeae9d0e
|
@ -331,7 +331,12 @@ func (ts *targetSet) runProviders(ctx context.Context, providers map[string]Targ
|
||||||
// We wait for a full initial set of target groups before releasing the mutex
|
// We wait for a full initial set of target groups before releasing the mutex
|
||||||
// to ensure the initial sync is complete and there are no races with subsequent updates.
|
// to ensure the initial sync is complete and there are no races with subsequent updates.
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
ts.sync()
|
// Just signal that there are initial sets to sync now. Actual syncing must only
|
||||||
|
// happen in the runScraping loop.
|
||||||
|
select {
|
||||||
|
case ts.syncCh <- struct{}{}:
|
||||||
|
default:
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// update handles a target group update from a target provider identified by the name.
|
// update handles a target group update from a target provider identified by the name.
|
||||||
|
|
Loading…
Reference in New Issue