diff --git a/lib/storage/storage.go b/lib/storage/storage.go index 811b62cd97..b0c5d42650 100644 --- a/lib/storage/storage.go +++ b/lib/storage/storage.go @@ -1659,6 +1659,8 @@ func (s *Storage) updatePerDateData(rows []rawRow) error { prevMetricID uint64 ) hm := s.currHourMetricIDs.Load().(*hourMetricIDs) + hmPrev := s.prevHourMetricIDs.Load().(*hourMetricIDs) + hmPrevDate := hmPrev.hour / 24 nextDayMetricIDs := &s.nextDayMetricIDs.Load().(*byDateMetricIDEntry).v todayShare16bit := uint64((float64(fasttime.UnixTimestamp()%(3600*24)) / (3600 * 24)) * (1 << 16)) type pendingDateMetricID struct { @@ -1708,6 +1710,10 @@ func (s *Storage) updatePerDateData(rows []rawRow) error { } s.pendingHourEntries = append(s.pendingHourEntries, e) s.pendingHourEntriesLock.Unlock() + if date == hmPrevDate && hmPrev.m.Has(metricID) { + // The metricID is already registered for the current day on the previous hour. + continue + } } // Slower path: check global cache for (date, metricID) entry.