lib/storage: do not sort metricIDs passed to Storage.prefetchMetricNames, since the caller is responsible for the sorting

This commit is contained in:
Aliaksandr Valialkin 2024-01-23 16:08:38 +02:00
parent 7ed7eb95b4
commit 9b3217db61
No known key found for this signature in database
GPG Key ID: 52C003EE2BCDB9EB

View File

@ -1204,11 +1204,13 @@ func (s *Storage) SearchMetricNames(qt *querytracer.Tracer, tfss []*TagFilters,
return metricNames, nil 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.
// //
// It is expected that all the metricIDs belong to the same (accountID, projectID) // It is expected that all the metricIDs belong to the same (accountID, projectID)
// //
// This should speed-up further searchMetricNameWithCache calls for srcMetricIDs from tsids. // 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, accountID, projectID uint32, srcMetricIDs []uint64, deadline uint64) error { func (s *Storage) prefetchMetricNames(qt *querytracer.Tracer, accountID, projectID uint32, srcMetricIDs []uint64, deadline uint64) error {
qt = qt.NewChild("prefetch metric names for %d metricIDs", len(srcMetricIDs)) qt = qt.NewChild("prefetch metric names for %d metricIDs", len(srcMetricIDs))
defer qt.Done() defer qt.Done()
@ -1218,7 +1220,7 @@ func (s *Storage) prefetchMetricNames(qt *querytracer.Tracer, accountID, project
return nil return nil
} }
var metricIDs uint64Sorter var metricIDs []uint64
s.prefetchedMetricIDsLock.Lock() s.prefetchedMetricIDsLock.Lock()
prefetchedMetricIDs := s.prefetchedMetricIDs prefetchedMetricIDs := s.prefetchedMetricIDs
for _, metricID := range srcMetricIDs { for _, metricID := range srcMetricIDs {
@ -1238,7 +1240,6 @@ func (s *Storage) prefetchMetricNames(qt *querytracer.Tracer, accountID, project
atomic.AddUint64(&s.slowMetricNameLoads, uint64(len(metricIDs))) atomic.AddUint64(&s.slowMetricNameLoads, uint64(len(metricIDs)))
// Pre-fetch metricIDs. // Pre-fetch metricIDs.
sort.Sort(metricIDs)
var missingMetricIDs []uint64 var missingMetricIDs []uint64
var metricName []byte var metricName []byte
var err error var err error