prometheus/cmd
bwplotka 894c201d62 config: Remove validation GetScrapeConfigs to avoid race and wrties.
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>
2024-12-11 11:07:16 +00:00
..
prometheus config: Remove validation GetScrapeConfigs to avoid race and wrties. 2024-12-11 11:07:16 +00:00
promtool fix promtool analyze block shows metric name with 0 cardinality (#15438) 2024-11-24 17:30:20 +01:00