From 4e59cf43805c29e9cb499073700e7b1a58676c87 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Tue, 11 May 2021 01:09:33 +0300 Subject: [PATCH] lib/storage: properly apply time range when matching an empty filter It must match all the time series on the given time range. Previously it was matched to all the time series without the restriction on the given time range. --- lib/storage/index_db.go | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/lib/storage/index_db.go b/lib/storage/index_db.go index 0b4e702dee..7ffdda7572 100644 --- a/lib/storage/index_db.go +++ b/lib/storage/index_db.go @@ -2318,15 +2318,11 @@ func (is *indexSearch) searchMetricIDs(tfss []*TagFilters, tr TimeRange, maxMetr metricIDs := &uint64set.Set{} for _, tfs := range tfss { if len(tfs.tfs) == 0 { - // Return all the metric ids - if err := is.updateMetricIDsAll(metricIDs, maxMetrics+1); err != nil { - return nil, err + // An empty filters must be equivalent to `{__name__!=""}` + tfs = NewTagFilters(tfs.accountID, tfs.projectID) + if err := tfs.Add(nil, nil, true, false); err != nil { + logger.Panicf(`BUG: cannot add {__name__!=""} filter: %s`, err) } - if metricIDs.Len() > maxMetrics { - return nil, fmt.Errorf("the number of unique timeseries exceeds %d; either narrow down the search or increase -search.maxUniqueTimeseries", maxMetrics) - } - // Stop the iteration, since we cannot find more metric ids with the remaining tfss. - break } if err := is.updateMetricIDsForTagFilters(metricIDs, tfs, tr, maxMetrics+1); err != nil { return nil, err