From e4df648ea0050790c1430c0fca677c6f8efe19b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=B3=E6=98=8E?= Date: Wed, 25 May 2022 20:08:24 +0800 Subject: [PATCH] lib/storage: Remove the effect of time zone on next retention period (#2568) (#2574) --- lib/storage/storage.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/storage/storage.go b/lib/storage/storage.go index 6bff202dbf..17dbb0ed0d 100644 --- a/lib/storage/storage.go +++ b/lib/storage/storage.go @@ -1101,12 +1101,16 @@ var saveCacheLock sync.Mutex func nextRetentionDuration(retentionMsecs int64) time.Duration { // Round retentionMsecs to days. This guarantees that per-day inverted index works as expected. retentionMsecs = ((retentionMsecs + msecPerDay - 1) / msecPerDay) * msecPerDay - t := time.Now().UnixNano() / 1e6 + now := time.Now() + t := now.UnixNano() / 1e6 deadline := ((t + retentionMsecs - 1) / retentionMsecs) * retentionMsecs // Schedule the deadline to +4 hours from the next retention period start. // This should prevent from possible double deletion of indexdb // due to time drift - see https://github.com/VictoriaMetrics/VictoriaMetrics/issues/248 . deadline += 4 * 3600 * 1000 + // The effect of time zone on retention period is moved out + _, offset := now.Zone() + deadline -= int64(offset) * 1000 return time.Duration(deadline-t) * time.Millisecond }