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 e041a196a7
commit c05885fb5f

View File

@ -1406,6 +1406,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, tfs.accountID, tfs.projectID)
is.db.uselessTagFiltersCache.Set(kb.B, uselessTagFilterCacheValue)
uselessTagFilters++
continue
}
return nil, nil, fmt.Errorf("cannot find MetricIDs for tagFilter %s: %s", tf, err)