Correctly handle {__name__="a"} (#5552)

This can cause problems in alerts.

Signed-off-by: Brian Brazil <brian.brazil@robustperception.io>
This commit is contained in:
Brian Brazil 2019-05-11 00:46:15 +01:00 committed by GitHub
parent 3a7a743bc4
commit 36dbf042e3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 2 deletions

View file

@ -179,8 +179,8 @@ func (node *UnaryExpr) String() string {
func (node *VectorSelector) String() string {
labelStrings := make([]string, 0, len(node.LabelMatchers)-1)
for _, matcher := range node.LabelMatchers {
// Only include the __name__ label if its no equality matching.
if matcher.Name == labels.MetricName && matcher.Type == labels.MatchEqual {
// Only include the __name__ label if its equality matching and matches the name.
if matcher.Name == labels.MetricName && matcher.Type == labels.MatchEqual && matcher.Value == node.Name {
continue
}
labelStrings = append(labelStrings, matcher.String())

View file

@ -81,6 +81,9 @@ func TestExprString(t *testing.T) {
{
in: `a[5m] offset 1m`,
},
{
in: `{__name__="a"}`,
},
}
for _, test := range inputs {