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

  1. Investigate overlapping source blocks (remove duplicates from bucket)
  2. Enable vertical compaction deliberately if overlap is expected
  3. 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)