From d14eb733e8483d11ef294c4e877a9bb97e69bf40 Mon Sep 17 00:00:00 2001 From: Manik Rana Date: Tue, 27 Aug 2024 21:01:21 +0530 Subject: [PATCH] refac: allow opt-in to OM CT ingestion Signed-off-by: Manik Rana --- model/textparse/interface.go | 7 +++++-- scrape/scrape.go | 2 +- scrape/scrape_test.go | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/model/textparse/interface.go b/model/textparse/interface.go index 0d7023800a..0d05119246 100644 --- a/model/textparse/interface.go +++ b/model/textparse/interface.go @@ -80,7 +80,7 @@ type Parser interface { // // This function always returns a valid parser, but might additionally // return an error if the content type cannot be parsed. -func New(b []byte, contentType string, parseClassicHistograms bool, st *labels.SymbolTable) (Parser, error) { +func New(b []byte, contentType string, parseClassicHistograms bool, skipOMSeries bool, st *labels.SymbolTable) (Parser, error) { if contentType == "" { return NewPromParser(b, st), nil } @@ -91,7 +91,10 @@ func New(b []byte, contentType string, parseClassicHistograms bool, st *labels.S } switch mediaType { case "application/openmetrics-text": - return NewOpenMetricsParser(b, st, WithOMParserCTSeriesSkipped()), nil + opts := func(o * openMetricsParserOptions) { + o.SkipCTSeries = skipOMSeries + } + return NewOpenMetricsParser(b, st, opts), nil case "application/vnd.google.protobuf": return NewProtobufParser(b, parseClassicHistograms, st), nil default: diff --git a/scrape/scrape.go b/scrape/scrape.go index 9979f7361c..881a246c3d 100644 --- a/scrape/scrape.go +++ b/scrape/scrape.go @@ -1489,7 +1489,7 @@ type appendErrors struct { } func (sl *scrapeLoop) append(app storage.Appender, b []byte, contentType string, ts time.Time) (total, added, seriesAdded int, err error) { - p, err := textparse.New(b, contentType, sl.scrapeClassicHistograms, sl.symbolTable) + p, err := textparse.New(b, contentType, sl.scrapeClassicHistograms, sl.enableCTZeroIngestion, sl.symbolTable) if err != nil { level.Debug(sl.l).Log( "msg", "Invalid content type on scrape, using prometheus parser as fallback.", diff --git a/scrape/scrape_test.go b/scrape/scrape_test.go index be81b8677c..deca768ff5 100644 --- a/scrape/scrape_test.go +++ b/scrape/scrape_test.go @@ -1482,7 +1482,7 @@ func TestScrapeLoopAppendCacheEntryButErrNotFound(t *testing.T) { fakeRef := storage.SeriesRef(1) expValue := float64(1) metric := []byte(`metric{n="1"} 1`) - p, warning := textparse.New(metric, "", false, labels.NewSymbolTable()) + p, warning := textparse.New(metric, "", false, false, labels.NewSymbolTable()) require.NoError(t, warning) var lset labels.Labels