thanos-io/thanos · error · halt
resulted compacted block
Error message
resulted compacted block %s overlaps with something
What it means
Post-compaction overlap check found the newly compacted block overlaps existing blocks while vertical compaction is disabled. Wrapped in halt() — the compactor stops to prevent data duplication/inconsistency.
Solutions
- Investigate overlapping source blocks (remove duplicates from bucket)
- Enable vertical compaction deliberately if overlap is expected
- Check for multiple compactors running concurrently
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at pkg/compact/compact.go:1348 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of thanos-io/thanos@35b8b99117 (2026-09-07).
Data as JSON: /api/errors/05e2c62d5a2f0b50.
Report an issue: GitHub.
Appendix: source
Thrown at pkg/compact/compact.go:1348
Source: metadata.CompactorSource,
SegmentFiles: block.GetSegmentFiles(bdir),
Extensions: cg.Extensions(),
}
if stats.ChunkMaxSize > 0 {
thanosMeta.IndexStats.ChunkMaxSize = stats.ChunkMaxSize
}
if stats.SeriesMaxSize > 0 {
thanosMeta.IndexStats.SeriesMaxSize = stats.SeriesMaxSize
}
newMeta, err = metadata.InjectThanos(cg.logger, bdir, thanosMeta, nil)
if err != nil {
return false, nil, errors.Wrapf(err, "failed to finalize the block %s", bdir)
}
// Ensure the output block is not overlapping with anything else,
// unless vertical compaction is enabled.
if !cg.enableVerticalCompaction {
if err := cg.areBlocksOverlapping(newMeta, toCompact...); err != nil {
return false, nil, halt(errors.Wrapf(err, "resulted compacted block %s overlaps with something", bdir))
}
}
begin = time.Now()
err = tracing.DoInSpanWithErr(ctx, "compaction_block_upload", func(ctx context.Context) error {
return block.Upload(ctx, cg.logger, cg.bkt, bdir, cg.hashFunc, objstore.WithUploadConcurrency(cg.blockFilesConcurrency))
})
if err != nil {
return false, nil, retry(errors.Wrapf(err, "upload of %s failed", compID))
}
level.Info(cg.logger).Log("msg", "uploaded block", "result_block", compID, "duration", time.Since(begin), "duration_ms", time.Since(begin).Milliseconds())
level.Info(cg.logger).Log("msg", "running post compaction callback", "result_block", compID)
if err := compactionLifecycleCallback.PostCompactionCallback(ctx, cg.logger, cg, compID); err != nil {
return false, nil, retry(errors.Wrapf(err, "failed to run post compaction callback for result block %s", compID))
}
level.Info(cg.logger).Log("msg", "finished running post compaction callback", "result_block", compID)
}View on GitHub (pinned to 35b8b99117)