textparse: validate series against metric family to prevent wrong metadata#18015
textparse: validate series against metric family to prevent wrong metadata#18015mdxabu wants to merge 3 commits intoprometheus:mainfrom
Conversation
…adata Move metadata validation from scrape.go into text and OM parsers. Series now only inherit metadata when they actually belong to the metric family, preventing cases like test_metric3_metric4 from incorrectly getting metadata from test_metric3. Fixes prometheus#17900 Signed-off-by: Abu <[email protected]>
- Remove unused receiver in PromParser.Unit() - Remove unused todoDetectFamilySwitch function Signed-off-by: Abu <[email protected]>
|
@jesusvazquez @bwplotka @bboreham, can you review my PR? |
Signed-off-by: Abu <[email protected]>
prometheus git:(fix-metadata-parser-issue-17900) go test ./tsdb/... -run TestDiskFillingUpAfterDisablingOOO_AppendV2 -v
=== RUN TestDiskFillingUpAfterDisablingOOO_AppendV2
=== PAUSE TestDiskFillingUpAfterDisablingOOO_AppendV2
=== CONT TestDiskFillingUpAfterDisablingOOO_AppendV2
=== RUN TestDiskFillingUpAfterDisablingOOO_AppendV2/float
=== PAUSE TestDiskFillingUpAfterDisablingOOO_AppendV2/float
=== RUN TestDiskFillingUpAfterDisablingOOO_AppendV2/integer_histogram
=== PAUSE TestDiskFillingUpAfterDisablingOOO_AppendV2/integer_histogram
=== RUN TestDiskFillingUpAfterDisablingOOO_AppendV2/float_histogram
=== PAUSE TestDiskFillingUpAfterDisablingOOO_AppendV2/float_histogram
=== RUN TestDiskFillingUpAfterDisablingOOO_AppendV2/custom_buckets_int_histogram
=== PAUSE TestDiskFillingUpAfterDisablingOOO_AppendV2/custom_buckets_int_histogram
=== RUN TestDiskFillingUpAfterDisablingOOO_AppendV2/custom_buckets_float_histogram
=== PAUSE TestDiskFillingUpAfterDisablingOOO_AppendV2/custom_buckets_float_histogram
=== RUN TestDiskFillingUpAfterDisablingOOO_AppendV2/gauge_int_histogram
=== PAUSE TestDiskFillingUpAfterDisablingOOO_AppendV2/gauge_int_histogram
=== RUN TestDiskFillingUpAfterDisablingOOO_AppendV2/gauge_float_histogram
=== PAUSE TestDiskFillingUpAfterDisablingOOO_AppendV2/gauge_float_histogram
=== CONT TestDiskFillingUpAfterDisablingOOO_AppendV2/float
=== CONT TestDiskFillingUpAfterDisablingOOO_AppendV2/custom_buckets_float_histogram
=== CONT TestDiskFillingUpAfterDisablingOOO_AppendV2/float_histogram
=== CONT TestDiskFillingUpAfterDisablingOOO_AppendV2/integer_histogram
=== CONT TestDiskFillingUpAfterDisablingOOO_AppendV2/custom_buckets_int_histogram
=== CONT TestDiskFillingUpAfterDisablingOOO_AppendV2/gauge_float_histogram
=== CONT TestDiskFillingUpAfterDisablingOOO_AppendV2/gauge_int_histogram
--- PASS: TestDiskFillingUpAfterDisablingOOO_AppendV2 (0.00s)
--- PASS: TestDiskFillingUpAfterDisablingOOO_AppendV2/custom_buckets_int_histogram (6.34s)
--- PASS: TestDiskFillingUpAfterDisablingOOO_AppendV2/float_histogram (6.34s)
--- PASS: TestDiskFillingUpAfterDisablingOOO_AppendV2/float (6.34s)
--- PASS: TestDiskFillingUpAfterDisablingOOO_AppendV2/integer_histogram (6.34s)
--- PASS: TestDiskFillingUpAfterDisablingOOO_AppendV2/gauge_int_histogram (6.34s)
--- PASS: TestDiskFillingUpAfterDisablingOOO_AppendV2/custom_buckets_float_histogram (6.34s)
--- PASS: TestDiskFillingUpAfterDisablingOOO_AppendV2/gauge_float_histogram (6.34s)
PASS
ok github.com/prometheus/prometheus/tsdb 9.257s
testing: warning: no tests to run
PASS
ok github.com/prometheus/prometheus/tsdb/agent 2.160s [no tests to run]
testing: warning: no tests to run
PASS
ok github.com/prometheus/prometheus/tsdb/chunkenc 3.676s [no tests to run]
testing: warning: no tests to run
PASS
testing: warning: no tests to run
PASS
ok github.com/prometheus/prometheus/tsdb/chunks 7.687s [no tests to run]
? github.com/prometheus/prometheus/tsdb/encoding [no test files]
testing: warning: no tests to run
PASS
ok github.com/prometheus/prometheus/tsdb/fileutil 6.854s [no tests to run]
testing: warning: no tests to run
PASS
ok github.com/prometheus/prometheus/tsdb/goversion 8.879s [no tests to run]
testing: warning: no tests to run
PASS
ok github.com/prometheus/prometheus/tsdb/index 9.303s [no tests to run]
testing: warning: no tests to run
PASS
ok github.com/prometheus/prometheus/tsdb/record 4.512s [no tests to run]
testing: warning: no tests to run
PASS
ok github.com/prometheus/prometheus/tsdb/tombstones 1.379s [no tests to run]
testing: warning: no tests to run
PASS
ok github.com/prometheus/prometheus/tsdb/tsdbutil 5.768s [no tests to run]
testing: warning: no tests to run
PASS
ok github.com/prometheus/prometheus/tsdb/wlog 8.611s [no tests to run]It was passing in my local machine, it was because the test may be stuck in a loop that never completes within the 10-minute default timeout |
|
Now, All Tests are Passed! |
bwplotka
left a comment
There was a problem hiding this comment.
Amazing work, thanks!
Yea, TestDiskFillingUpAfterDisablingOOO* is flaky, you can ignore it for now (trying to find the cause in #18017)
So this PR looks pretty good, but I didn't look ultra closely. Before I do we need to understand the current overhead. The main challenge is performance. How much overhead this is?
We used to do this metric family check ONLY on metadata-wal-feature. Now with this PR we will do it always, on every line. Let's see how much more expensive it is.
We can then later run prombench, once we are happy with microbenchmarks.
@bwplotka, I'll ignore that one. I ran the benchmarks as requested. Here's what I found: Ran Without metadata-to-WAL:
With metadata-to-WAL (the path we're changing):
Similar results for OpenMetrics - basically no difference. The validation in
The only extra work occurs when we encounter mismatched series (like the Let me know if you'd like me to run any other benchmarks or if prombench would be helpful! here's the full benchmark, goos: darwin
goarch: arm64
pkg: github.com/prometheus/prometheus/scrape
cpu: Apple M4
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromText-10 1039 560796 ns/op 2114 B/op 20 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromText-10 1051 556982 ns/op 2104 B/op 20 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromText-10 1060 555347 ns/op 2097 B/op 20 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=OMText-10 1086 542974 ns/op 2224 B/op 21 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=OMText-10 1081 541537 ns/op 2227 B/op 21 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=OMText-10 1095 541272 ns/op 2217 B/op 21 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromProto-10 877 679122 ns/op 113262 B/op 35 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromProto-10 877 685438 ns/op 113262 B/op 35 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromProto-10 813 710224 ns/op 113332 B/op 36 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromText-10 597 975260 ns/op 3584 B/op 32 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromText-10 610 1101699 ns/op 3541 B/op 31 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromText-10 528 1003408 ns/op 3852 B/op 34 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=OMText-10 594 971159 ns/op 3741 B/op 33 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=OMText-10 610 965148 ns/op 3687 B/op 32 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=OMText-10 614 972440 ns/op 3674 B/op 32 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromProto-10 735 820386 ns/op 76247 B/op 2240 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromProto-10 744 809641 ns/op 76233 B/op 2240 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromProto-10 741 809536 ns/op 76238 B/op 2240 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromText-10 1009 565227 ns/op 2139 B/op 21 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromText-10 1064 569499 ns/op 2094 B/op 20 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromText-10 1009 583339 ns/op 2139 B/op 21 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=OMText-10 1005 551280 ns/op 2288 B/op 22 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=OMText-10 1086 544044 ns/op 2224 B/op 21 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=OMText-10 1089 539897 ns/op 2222 B/op 21 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromProto-10 861 686147 ns/op 113278 B/op 36 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromProto-10 868 681896 ns/op 113271 B/op 36 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromProto-10 866 683706 ns/op 113274 B/op 36 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromText-10 607 977012 ns/op 3551 B/op 31 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromText-10 608 972373 ns/op 3547 B/op 31 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromText-10 608 976114 ns/op 3547 B/op 31 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=OMText-10 606 971485 ns/op 3700 B/op 32 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=OMText-10 613 969312 ns/op 3588 B/op 32 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=OMText-10 610 971731 ns/op 3687 B/op 32 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromProto-10 744 801064 ns/op 76233 B/op 2240 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromProto-10 741 800236 ns/op 76237 B/op 2240 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=false/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromProto-10 744 799162 ns/op 76161 B/op 2240 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromText-10 1059 565286 ns/op 2146 B/op 21 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromText-10 1045 567604 ns/op 2157 B/op 21 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromText-10 1057 562795 ns/op 2148 B/op 21 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=OMText-10 1065 551305 ns/op 2288 B/op 22 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=OMText-10 1084 549606 ns/op 2273 B/op 22 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=OMText-10 1070 549734 ns/op 2284 B/op 22 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromProto-10 872 686182 ns/op 113316 B/op 37 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromProto-10 872 684832 ns/op 113322 B/op 37 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromProto-10 862 686324 ns/op 113326 B/op 37 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromText-10 597 985954 ns/op 3632 B/op 33 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromText-10 602 983036 ns/op 3615 B/op 32 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromText-10 602 985350 ns/op 3615 B/op 32 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=OMText-10 607 977440 ns/op 3745 B/op 33 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=OMText-10 607 981150 ns/op 3745 B/op 33 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=OMText-10 609 977454 ns/op 3738 B/op 33 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromProto-10 738 795068 ns/op 76215 B/op 2241 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromProto-10 746 797865 ns/op 76274 B/op 2241 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromProto-10 748 795148 ns/op 76199 B/op 2241 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromText-10 1000 586115 ns/op 2194 B/op 22 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromText-10 1008 587658 ns/op 2188 B/op 22 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromText-10 1003 587910 ns/op 2192 B/op 22 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=OMText-10 1022 581213 ns/op 2322 B/op 22 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=OMText-10 1021 579339 ns/op 2323 B/op 22 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=OMText-10 1021 576110 ns/op 2323 B/op 22 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromProto-10 834 712716 ns/op 113356 B/op 37 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromProto-10 835 708244 ns/op 113354 B/op 37 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromProto-10 834 711314 ns/op 113356 B/op 37 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromText-10 583 1012264 ns/op 3588 B/op 33 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromText-10 586 1011874 ns/op 3671 B/op 33 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromText-10 583 1017046 ns/op 3682 B/op 33 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=OMText-10 583 1010925 ns/op 3828 B/op 34 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=OMText-10 585 1012369 ns/op 3727 B/op 34 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=OMText-10 588 1013403 ns/op 3810 B/op 34 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromProto-10 705 833927 ns/op 76351 B/op 2242 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromProto-10 714 830665 ns/op 76336 B/op 2242 allocs/op
BenchmarkScrapeLoopAppend/withStorage=false/appV2=true/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromProto-10 715 833569 ns/op 76333 B/op 2242 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromText-10 918 611767 ns/op 5660 B/op 38 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromText-10 924 611975 ns/op 5620 B/op 37 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromText-10 948 606476 ns/op 5518 B/op 37 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=OMText-10 958 588841 ns/op 5624 B/op 38 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=OMText-10 958 587394 ns/op 5635 B/op 38 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=OMText-10 968 587952 ns/op 5582 B/op 37 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromProto-10 798 730484 ns/op 117941 B/op 55 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromProto-10 768 745519 ns/op 117999 B/op 55 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromProto-10 771 742198 ns/op 117740 B/op 55 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromText-10 568 1002223 ns/op 8100 B/op 51 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromText-10 586 990830 ns/op 7856 B/op 50 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromText-10 598 984214 ns/op 7783 B/op 49 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=OMText-10 600 973561 ns/op 7867 B/op 50 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=OMText-10 597 973495 ns/op 7897 B/op 50 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=OMText-10 600 973112 ns/op 7865 B/op 50 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromProto-10 709 812856 ns/op 79991 B/op 2256 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromProto-10 711 810789 ns/op 79799 B/op 2256 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromProto-10 710 809859 ns/op 80098 B/op 2256 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromText-10 834 649843 ns/op 6660 B/op 40 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromText-10 818 627560 ns/op 6450 B/op 40 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromText-10 930 621489 ns/op 5903 B/op 37 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=OMText-10 926 636004 ns/op 6036 B/op 38 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=OMText-10 975 600418 ns/op 5818 B/op 37 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=OMText-10 986 586084 ns/op 5774 B/op 37 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromProto-10 812 733402 ns/op 118504 B/op 54 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromProto-10 783 733293 ns/op 117906 B/op 55 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromProto-10 793 735127 ns/op 118112 B/op 55 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromText-10 594 983034 ns/op 8254 B/op 50 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromText-10 594 979253 ns/op 8118 B/op 49 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromText-10 595 979197 ns/op 8248 B/op 50 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=OMText-10 598 974196 ns/op 8220 B/op 50 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=OMText-10 597 974777 ns/op 8324 B/op 50 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=OMText-10 595 977084 ns/op 8809 B/op 51 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromProto-10 716 812894 ns/op 80207 B/op 2256 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromProto-10 708 822204 ns/op 80278 B/op 2256 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=false/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromProto-10 468 1121788 ns/op 82869 B/op 2267 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromText-10 859 663310 ns/op 6291 B/op 40 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromText-10 831 786976 ns/op 6116 B/op 41 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromText-10 715 905300 ns/op 6840 B/op 45 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=OMText-10 534 1078825 ns/op 8738 B/op 55 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=OMText-10 514 1031454 ns/op 9011 B/op 57 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=OMText-10 586 1081051 ns/op 8551 B/op 52 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromProto-10 685 873897 ns/op 119648 B/op 59 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromProto-10 552 910258 ns/op 119874 B/op 66 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=false/data=1Fam2000Gauges/fmt=PromProto-10 680 867189 ns/op 118848 B/op 59 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromText-10 516 1132341 ns/op 8876 B/op 56 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromText-10 536 1078256 ns/op 8462 B/op 54 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromText-10 510 1136974 ns/op 8795 B/op 56 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=OMText-10 480 1327926 ns/op 9378 B/op 59 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=OMText-10 580 1033621 ns/op 8112 B/op 52 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=OMText-10 565 1156595 ns/op 8278 B/op 53 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromProto-10 579 1016194 ns/op 81520 B/op 2262 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromProto-10 579 1089587 ns/op 80993 B/op 2262 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=false/data=237FamsAllTypes/fmt=PromProto-10 663 898401 ns/op 80261 B/op 2259 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromText-10 775 903634 ns/op 6854 B/op 43 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromText-10 777 747252 ns/op 6822 B/op 42 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromText-10 849 685619 ns/op 6481 B/op 40 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=OMText-10 858 674362 ns/op 6483 B/op 41 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=OMText-10 820 680060 ns/op 6700 B/op 42 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=OMText-10 854 706427 ns/op 6505 B/op 41 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromProto-10 642 869680 ns/op 119829 B/op 61 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromProto-10 638 1026311 ns/op 119761 B/op 61 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=true/data=1Fam2000Gauges/fmt=PromProto-10 722 877325 ns/op 118416 B/op 58 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromText-10 530 1072334 ns/op 10127 B/op 55 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromText-10 552 1075898 ns/op 8837 B/op 53 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromText-10 546 1075014 ns/op 9059 B/op 53 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=OMText-10 547 1065822 ns/op 8946 B/op 54 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=OMText-10 549 1068959 ns/op 9018 B/op 54 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=OMText-10 549 1066611 ns/op 9021 B/op 54 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromProto-10 654 890071 ns/op 81205 B/op 2259 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromProto-10 654 893481 ns/op 80834 B/op 2259 allocs/op
BenchmarkScrapeLoopAppend/withStorage=true/appV2=true/appendMetadataToWAL=true/data=237FamsAllTypes/fmt=PromProto-10 646 893906 ns/op 80874 B/op 2259 allocs/op
BenchmarkScrapeLoopAppend_HistogramsWithExemplars/appV2=false-10 391 1499972 ns/op 146815 B/op 2481 allocs/op
BenchmarkScrapeLoopAppend_HistogramsWithExemplars/appV2=false-10 396 1490392 ns/op 146851 B/op 2480 allocs/op
BenchmarkScrapeLoopAppend_HistogramsWithExemplars/appV2=false-10 394 1493240 ns/op 145689 B/op 2480 allocs/op
BenchmarkScrapeLoopAppend_HistogramsWithExemplars/appV2=true-10 388 1514843 ns/op 146048 B/op 2483 allocs/op
BenchmarkScrapeLoopAppend_HistogramsWithExemplars/appV2=true-10 384 1518606 ns/op 146025 B/op 2483 allocs/op
BenchmarkScrapeLoopAppend_HistogramsWithExemplars/appV2=true-10 386 1526047 ns/op 145973 B/op 2483 allocs/op
PASS
ok github.com/prometheus/prometheus/scrape 89.640s |
|
I think you tried to compare metadata Wal feature false to true, right? We don't change metadata to wal feature. We change general metadata parsing which is always happening. What we want instead is to do this benchmark (you can focus test on "appV2=true/appendMetadataToWAL=true/") on current main (lets call this "ref"). Then do the same on your pr ("pr"). Then do "benchstat ref.txt pr.txt" which will aggregate result and give concrete % of more or less time/allocs. |
|
But btw great work on running those benchmarks so far! We just need to do 2 of them. We can also focus on text formarts |
@bwplotka, What's next? |
|
This: #18015 (comment) You didn't compare results with correct thing. We need to know if this PR is making production slower and more expensive or not (and how much). Not across features, but vs |
OMG, I miss this comment :) |
|
@bwplotka
and and for +0.57% geomean time, +1.14% geomean memory, zero new allocations. The PromProto path is essentially unaffected. The small overhead comes from the metadata validation that cross-checks series against their declared metric family type in text-based parsers. |
|
@bwplotka, can you review my PR now? |
Move metadata validation from
scrape.gointo text and OM parsers. Series now only inherit metadata when they actually belong to the metric family, preventing cases liketest_metric3_metric4from incorrectly getting metadata fromtest_metric3.This fixes a long-standing issue where metrics could inherit wrong TYPE/HELP/UNIT metadata from unrelated metric families. The validation logic using
isSeriesPartOfFamilyhas been moved directly into the parser'sLabels()method, making it more efficient and accurate.Changes:
isSeriesPartOfFamily()helper function intextparse/interface.goPromParserandOpenMetricsParserto track current metric family and validate series membershipLabels()method to set metadata to unknown when series doesn't belong to the tracked familyExample of fixed behavior:
Before:
test_metric3_metric4would incorrectly get__type__="gauge"After:
test_metric3_metric4correctly gets no type label (unknown)Which issue(s) does the PR fix:
Fixes #17900
Does this PR introduce a user-facing change?