lib/storage: mark tag filter returning errFallbackToMetricNameMatch as useless

This will save CPU on subsequent calls for this filter
This commit is contained in:
Aliaksandr Valialkin 2019-09-18 19:07:46 +03:00
parent 6f3b2fd600
commit 3d83f5d334

View File

@ -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)