diff --git a/pkg/runner/runner.go b/pkg/runner/runner.go index 17cb068..8092d2d 100644 --- a/pkg/runner/runner.go +++ b/pkg/runner/runner.go @@ -364,6 +364,12 @@ func (edm *dnstapMinimiser) reverseLabelsBounded(labels []string, maxLen int) [] return boundedReverseLabels } +const sentHistogramRetention = 24 * time.Hour + +func sentHistogramExpired(modTime, now time.Time) bool { + return now.Sub(modTime) > sentHistogramRetention +} + func (edm *dnstapMinimiser) diskCleaner(wg *sync.WaitGroup, sentDir string) { // We will scan the directory each tick for sent files to remove. defer wg.Done() @@ -371,8 +377,6 @@ func (edm *dnstapMinimiser) diskCleaner(wg *sync.WaitGroup, sentDir string) { ticker := time.NewTicker(time.Second * 60) defer ticker.Stop() - oneDay := time.Hour * 12 - timerLoop: for { select { @@ -397,7 +401,7 @@ timerLoop: continue } - if time.Since(fileInfo.ModTime()) > oneDay { + if sentHistogramExpired(fileInfo.ModTime(), time.Now()) { absPath := filepath.Join(sentDir, dirEntry.Name()) edm.log.Info("diskCleaner: removing file", "filename", absPath) err = os.Remove(absPath) diff --git a/pkg/runner/runner_test.go b/pkg/runner/runner_test.go index 2bbe84b..c96e832 100644 --- a/pkg/runner/runner_test.go +++ b/pkg/runner/runner_test.go @@ -2145,3 +2145,15 @@ func TestWriteHistogramParquetExplicitThreshold(t *testing.T) { } } } + +func TestDiskCleanerRetentionThreshold(t *testing.T) { + now := time.Date(2026, 4, 30, 12, 0, 0, 0, time.UTC) + + if !sentHistogramExpired(now.Add(-25*time.Hour), now) { + t.Fatal("histogram older than 24 hours should expire") + } + + if sentHistogramExpired(now.Add(-23*time.Hour), now) { + t.Fatal("histogram newer than 24 hours should not expire") + } +}