From 693a3de0a6de224d8f9f407a5cc09394cc7c4475 Mon Sep 17 00:00:00 2001 From: Dmytro Kozlov Date: Tue, 20 Dec 2022 20:11:38 +0200 Subject: [PATCH] lib/storage: fix collect downsampling metrics (#489) * lib/storage: fix downsampling * lib/storage: update logic * lib/storage: fix comments, removed unneeded check --- lib/storage/partition.go | 9 +++++---- lib/storage/table.go | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/storage/partition.go b/lib/storage/partition.go index 04e35cb06..f9919f616 100644 --- a/lib/storage/partition.go +++ b/lib/storage/partition.go @@ -1224,10 +1224,6 @@ func atomicSetBool(p *uint64, b bool) { func (pt *partition) runFinalDedup() error { requiredDedupInterval, actualDedupInterval := pt.getRequiredDedupInterval() - if requiredDedupInterval <= actualDedupInterval { - // Deduplication isn't needed. - return nil - } t := time.Now() logger.Infof("starting final dedup for partition %s using requiredDedupInterval=%d ms, since the partition has smaller actualDedupInterval=%d ms", pt.bigPartsPath, requiredDedupInterval, actualDedupInterval) @@ -1238,6 +1234,11 @@ func (pt *partition) runFinalDedup() error { return nil } +func (pt *partition) isFinalDedupNeeded() bool { + requiredDedupInterval, actualDedupInterval := pt.getRequiredDedupInterval() + return requiredDedupInterval > actualDedupInterval +} + func (pt *partition) getRequiredDedupInterval() (int64, int64) { pws := pt.GetParts(nil, false) defer pt.PutParts(pws) diff --git a/lib/storage/table.go b/lib/storage/table.go index 96fb3b186..95fd3a657 100644 --- a/lib/storage/table.go +++ b/lib/storage/table.go @@ -466,7 +466,7 @@ func (tb *table) finalDedupWatcher() { timestamp := timestampFromTime(time.Now()) currentPartitionName := timestampToPartitionName(timestamp) for _, ptw := range ptws { - if ptw.pt.name == currentPartitionName { + if ptw.pt.name == currentPartitionName || !ptw.pt.isFinalDedupNeeded() { // Do not run final dedup for the current month. continue }