From 3d83f5d3340d707025aeb0b33a8d1fb5e1988868 Mon Sep 17 00:00:00 2001
From: Aliaksandr Valialkin <valyala@gmail.com>
Date: Wed, 18 Sep 2019 19:07:46 +0300
Subject: [PATCH] lib/storage: mark tag filter returning
 errFallbackToMetricNameMatch as useless

This will save CPU on subsequent calls for this filter
---
 lib/storage/index_db.go | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lib/storage/index_db.go b/lib/storage/index_db.go
index ce19848838..d4b4704f18 100644
--- a/lib/storage/index_db.go
+++ b/lib/storage/index_db.go
@@ -1388,6 +1388,11 @@ func (is *indexSearch) getTagFilterWithMinMetricIDsCount(tfs *TagFilters, maxMet
 		if err != nil {
 			if err == errFallbackToMetricNameMatch {
 				// Skip tag filters requiring to scan for too many metrics.
+				kb.B = append(kb.B[:0], uselessSingleTagFilterKeyPrefix)
+				kb.B = encoding.MarshalUint64(kb.B, uint64(maxMetrics))
+				kb.B = tf.Marshal(kb.B)
+				is.db.uselessTagFiltersCache.Set(kb.B, uselessTagFilterCacheValue)
+				uselessTagFilters++
 				continue
 			}
 			return nil, nil, fmt.Errorf("cannot find MetricIDs for tagFilter %s: %s", tf, err)