diff --git a/lib/storage/storage.go b/lib/storage/storage.go index ee8e53ca7b..a4106901c4 100644 --- a/lib/storage/storage.go +++ b/lib/storage/storage.go @@ -50,9 +50,9 @@ type Storage struct { slowPerDayIndexInserts uint64 slowMetricNameLoads uint64 - path string - cachePath string - retentionMonths int + path string + cachePath string + retentionMsecs int64 // lock file for exclusive access to the storage on the given path. flockF *os.File @@ -118,11 +118,10 @@ func OpenStorage(path string, retentionMsecs int64) (*Storage, error) { if retentionMsecs <= 0 { retentionMsecs = maxRetentionMsecs } - retentionMonths := (retentionMsecs + (msecsPerMonth - 1)) / msecsPerMonth s := &Storage{ - path: path, - cachePath: path + "/cache", - retentionMonths: int(retentionMonths), + path: path, + cachePath: path + "/cache", + retentionMsecs: retentionMsecs, stop: make(chan struct{}), } @@ -473,8 +472,9 @@ func (s *Storage) startRetentionWatcher() { } func (s *Storage) retentionWatcher() { + retentionMonths := int((s.retentionMsecs + (msecsPerMonth - 1)) / msecsPerMonth) for { - d := nextRetentionDuration(s.retentionMonths) + d := nextRetentionDuration(retentionMonths) select { case <-s.stop: return