Store the checkpoint we read last, so that we don't keep reading the same checkpoint on each tick.
@@ -99,6 +99,7 @@ type WALWatcher struct {
writer writeTo
logger log.Logger
walDir string
+ lastCheckpoint string
startTime int64
@@ -183,6 +184,7 @@ func (w *WALWatcher) run() error {
return errors.Wrap(err, "readCheckpoint")
}
}
+ w.lastCheckpoint = lastCheckpoint
currentSegment, err := w.findSegmentForIndex(nextIndex)
if err != nil {
@@ -342,9 +344,10 @@ func (w *WALWatcher) garbageCollectSeries(segmentNum int) error {
return errors.Wrap(err, "tsdb.LastCheckpoint")
}
- if dir == "" {
+ if dir == "" || dir == w.lastCheckpoint {
return nil
}
+ w.lastCheckpoint = dir
index, err := checkpointNum(dir)
if err != nil {
