mirror of
https://github.com/prometheus/prometheus.git
synced 2024-12-26 22:19:40 -08:00
894c201d62
We should never modify (or even shallow copy) Config after config.Load; added comments and modified GetScrapeConfigs to do so. For GetScrapeConfigs the validation (even repeated) was likely doing writes (because global fields was 0). We GetScrapeConfigs concurrently in tests and ApplyConfig causing test races. In prod there were races but likelyt only to replace 0 with 0, so not too severe. I remove validation since I don't see anyone using our config.Config without Load or UnmarshalYAML. We can add another validation method if there are use cases for this. Fixes #15538 Alternatives: * Add config mutex for GetScrapeConfigs (more complex and slow) * Copy Config (Config struct is huge and required complex deep copy) * Second validate is noop * e.g. by checking if global is 0 (prone to errors in future) * e.g. once.Sync validation - this introduces state and mutex, let's avoid it until we know it's needed (multiple ways of loading config) Signed-off-by: bwplotka <bwplotka@gmail.com> |
||
---|---|---|
.. | ||
testdata | ||
config.go | ||
config_default_test.go | ||
config_test.go | ||
config_windows_test.go | ||
reload.go | ||
reload_test.go |