thanos-io/thanos · error
group
Error message
group %s
What it means
Compacting a specific group failed with an error other than the handled out-of-order-chunks case; the error is tagged with the group key and sent to errChan, failing the compaction run for that cycle.
Solutions
- Read the wrapped group error for the root cause
- Check for corrupt blocks in the group
- Re-run compaction after fixing the issue
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at pkg/compact/compact.go:1558 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/3b3fdc8400a51665.
Report an issue: GitHub.
Appendix: source
Thrown at pkg/compact/compact.go:1558
}
// If block has out of order chunk and it has been configured to skip it,
// then we can mark the block for no compaction so that the next compaction run
// will skip it.
if IsOutOfOrderChunkError(err) && c.skipBlocksWithOutOfOrderChunks {
if err := block.MarkForNoCompact(
ctx,
c.logger,
c.bkt,
err.(OutOfOrderChunksError).id,
metadata.OutOfOrderChunksNoCompactReason,
"OutofOrderChunk: marking block with out-of-order series/chunks to as no compact to unblock compaction", g.blocksMarkedForNoCompact); err == nil {
mtx.Lock()
finishedAllGroups = false
mtx.Unlock()
continue
}
}
errChan <- errors.Wrapf(err, "group %s", g.Key())
return
}
})
}
// Blocks that were compacted are garbage collected after each Compaction.
// However if compactor crashes we need to resolve those on startup.
level.Info(c.logger).Log("msg", "start initial sync of metas")
if err := c.sy.SyncMetas(ctx); err != nil {
return errors.Wrap(err, "sync")
}
var ignoreBlocks map[ulid.ULID]struct{}
if c.blocksCleaner != nil {
deletedBlocks, err := c.blocksCleaner.DeleteMarkedBlocks(ctx)
if err != nil {
return errors.Wrap(err, "cleaning marked blocks")
}View on GitHub (pinned to 35b8b99117)