thanos-io/thanos · error
sync
Error message
sync
What it means
Wraps sy.SyncMetas during the compactor's initial metadata sync: downloading/refreshing block metadata from object storage failed (bucket auth, network, corrupt meta.json). The compaction loop cannot plan without a consistent view of the bucket's blocks.
Solutions
- Check object store connectivity and permissions
- Inspect wrapped fetcher errors for failing blocks
- Retry after transient failures
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at pkg/compact/compact.go:1568 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/6b6532dc5f118cca.
Report an issue: GitHub.
Appendix: source
Thrown at pkg/compact/compact.go:1568
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")
}
ignoreBlocks = deletedBlocks
}
level.Info(c.logger).Log("msg", "start of initial garbage collection")
if err := c.sy.GarbageCollect(ctx, ignoreBlocks); err != nil {
return errors.Wrap(err, "garbage")
}
groups, err := c.grouper.Groups(c.sy.Metas())
if err != nil {View on GitHub (pinned to 35b8b99117)