Skip to content

feat: Add new logging for compaction level 5 and remove bug with holdoff #26488

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 2, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 9 additions & 13 deletions tsdb/engine/tsm1/engine.go
Original file line number Diff line number Diff line change
Expand Up @@ -2163,16 +2163,6 @@ const optimizationHoldoff = 5 * time.Minute
// tickPeriod is the interval between successive compaction loops.
const tickPeriod = time.Second

// StartOptHoldOff will create a hold off timer for OptimizedCompaction
func (e *Engine) StartOptHoldOff(holdOffDurationCheck time.Duration, optHoldoffStart time.Time, optHoldoffDuration time.Duration) {
startOptHoldoff := func(dur time.Duration) {
optHoldoffStart = time.Now()
optHoldoffDuration = dur
e.logger.Info("optimize compaction holdoff timer started", logger.Shard(e.id), zap.Duration("duration", optHoldoffDuration), zap.Time("endTime", optHoldoffStart.Add(optHoldoffDuration)))
}
startOptHoldoff(holdOffDurationCheck)
}

func (e *Engine) GetPlanTypeBasedOnHoldOff(start time.Time, dur time.Duration) PlanType {
planType := PT_SmartOptimize
if time.Since(start) < dur {
Expand All @@ -2186,7 +2176,12 @@ func (e *Engine) compact(wg *sync.WaitGroup) {
defer t.Stop()
var optHoldoffStart time.Time
var optHoldoffDuration time.Duration
e.StartOptHoldOff(initialOptimizationHoldoff, optHoldoffStart, optHoldoffDuration)
startOptHoldoff := func(dur time.Duration) {
optHoldoffStart = time.Now()
optHoldoffDuration = dur
e.logger.Info("optimize compaction holdoff timer started", logger.Shard(e.id), zap.Duration("duration", optHoldoffDuration), zap.Time("endTime", optHoldoffStart.Add(optHoldoffDuration)))
}
startOptHoldoff(initialOptimizationHoldoff)

var nextDisabledMsg time.Time

Expand Down Expand Up @@ -2253,7 +2248,7 @@ func (e *Engine) compact(wg *sync.WaitGroup) {
}
log := e.logger.With(zap.Strings("files", theGroup), zap.Bool("aggressive", isAggressive))

log.Info("Running optimized compaction for level 5 group")
log.Debug("Checking optimized level 5 group is compactable")
if err := e.compactOptimize(theGroup, pointsPerBlock, wg); err != nil {
if errors.Is(err, ErrOptimizeCompactionLimited) {
// We've reached the limit of optimized compactions. Let's not schedule anything else this schedule cycle
Expand All @@ -2267,9 +2262,10 @@ func (e *Engine) compact(wg *sync.WaitGroup) {
log.Error("Error during compactOptimize", zap.Error(err))
}
} else {
log.Info("Optimized level 5 group compacted")
level5Groups = level5Groups[1:]
}
e.StartOptHoldOff(optimizationHoldoff, optHoldoffStart, optHoldoffDuration)
startOptHoldoff(optimizationHoldoff)
}
}

Expand Down