thanos: Incorrect regex label match when using `|` with an empty option
Thanos, Prometheus and Golang version used: Thanos: v0.22.0 Prometheus: v2.28.1
Object Storage Provider: S3
What happened:
Using a Thanos Store Gateway as the data source, prometheus_build_info{doesnotexist=~"whocares|"} (note the tailing | on that regex) returns no series.
What you expected to happen:
I expected the Store Gateway to return the same series as prometheus_build_info{doesnotexist=""}, which is what a Prometheus data source does.
How to reproduce it (as minimally and precisely as possible):
Write a query with label=~"value|" on a metric without a series with label="value".
Use Store Filtering in the Query UI to select either a Prometheus instance or a Store Gateway.
Example query:
prometheus_build_info{doesnotexist=~"whocares|"}
Full logs to relevant components: Not applicable, I don’t think.
Anything else we need to know:
Basically Prometheus appears to interpret {label=~"value|"} as either {label=value} or {label=""} (label does not exist). I expected Thanos to do the same.
Let me know if you need anymore info.
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Reactions: 3
- Comments: 15 (6 by maintainers)
I suppose a good start would be to add failing tests. A suitable location seems to be the e2e tests: https://github.com/thanos-io/thanos/tree/main/test/e2e.