From 84bc9d6c3f6e717a89f1dca08899b6a7d040e845 Mon Sep 17 00:00:00 2001 From: Manik Rana Date: Wed, 10 Jul 2024 00:10:13 +0530 Subject: [PATCH] fix: cover edgecase of `gauge_created` in CreatedTimestamp() Signed-off-by: Manik Rana --- model/textparse/openmetricsparse.go | 11 ++++++++--- model/textparse/openmetricsparse_test.go | 11 ++++++++++- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/model/textparse/openmetricsparse.go b/model/textparse/openmetricsparse.go index 56bd4dec9b..d6404e019a 100644 --- a/model/textparse/openmetricsparse.go +++ b/model/textparse/openmetricsparse.go @@ -246,7 +246,6 @@ loop: continue } - // edge case: if gauge_created of unknown type -> skip parsing newLbs = newLbs.DropMetricName() switch p.mtype { case model.MetricTypeCounter: @@ -620,10 +619,16 @@ func (p *OpenMetricsParser) parseMetricSuffix(t token) (Entry, error) { var newLbs labels.Labels p.Metric(&newLbs) name := newLbs.Get(model.MetricNameLabel) - if strings.HasSuffix(name, "_created") && p.skipCT { - return p.Next() + switch p.mtype { + case model.MetricTypeCounter, model.MetricTypeSummary, model.MetricTypeHistogram: + if strings.HasSuffix(name, "_created") && p.skipCT { + return p.Next() + } + default: + break } return EntrySeries, nil + } func (p *OpenMetricsParser) getFloatValue(t token, after string) (float64, error) { diff --git a/model/textparse/openmetricsparse_test.go b/model/textparse/openmetricsparse_test.go index 469b19ed8b..9aa1dcffa3 100644 --- a/model/textparse/openmetricsparse_test.go +++ b/model/textparse/openmetricsparse_test.go @@ -79,7 +79,9 @@ baz_bucket{le="0.0"} 0 baz_bucket{le="+Inf"} 17 baz_count 17 baz_sum 324789.3 -baz_created 1520430000` +baz_created 1520430000 +# TYPE fizz_created gauge +fizz_created 17.0` input += "\n# HELP metric foo\x00bar" input += "\nnull_byte_metric{a=\"abc\x00\"} 1" @@ -294,6 +296,13 @@ baz_created 1520430000` v: 324789.3, lset: labels.FromStrings("__name__", "baz_sum"), ct: int64p(1520430000), + }, { + m: "fizz_created", + typ: model.MetricTypeGauge, + }, { + m: `fizz_created`, + v: 17, + lset: labels.FromStrings("__name__", "fizz_created"), }, { m: "metric", help: "foo\x00bar",