From 4d78954158275c25df1889a781aa655d7f039dae Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Tue, 23 Jan 2024 16:08:38 +0200 Subject: [PATCH] lib/storage: do not sort metricIDs passed to Storage.prefetchMetricNames, since the caller is responsible for the sorting --- lib/storage/storage.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/storage/storage.go b/lib/storage/storage.go index 4302366d8..d4b44b043 100644 --- a/lib/storage/storage.go +++ b/lib/storage/storage.go @@ -1139,9 +1139,11 @@ func (s *Storage) SearchMetricNames(qt *querytracer.Tracer, tfss []*TagFilters, return metricNames, nil } -// prefetchMetricNames pre-fetches metric names for the given metricIDs into metricID->metricName cache. +// prefetchMetricNames pre-fetches metric names for the given srcMetricIDs into metricID->metricName cache. // // This should speed-up further searchMetricNameWithCache calls for srcMetricIDs from tsids. +// +// It is expected that srcMetricIDs are already sorted by the caller. Otherwise the pre-fetching may be slow. func (s *Storage) prefetchMetricNames(qt *querytracer.Tracer, srcMetricIDs []uint64, deadline uint64) error { qt = qt.NewChild("prefetch metric names for %d metricIDs", len(srcMetricIDs)) defer qt.Done() @@ -1151,7 +1153,7 @@ func (s *Storage) prefetchMetricNames(qt *querytracer.Tracer, srcMetricIDs []uin return nil } - var metricIDs uint64Sorter + var metricIDs []uint64 s.prefetchedMetricIDsLock.Lock() prefetchedMetricIDs := s.prefetchedMetricIDs for _, metricID := range srcMetricIDs { @@ -1171,7 +1173,6 @@ func (s *Storage) prefetchMetricNames(qt *querytracer.Tracer, srcMetricIDs []uin atomic.AddUint64(&s.slowMetricNameLoads, uint64(len(metricIDs))) // Pre-fetch metricIDs. - sort.Sort(metricIDs) var missingMetricIDs []uint64 var metricName []byte var err error