thanos-io/thanos · error
corrupted blocks found
Error message
corrupted blocks found
What it means
ErrorSyncBlockCorrupted is a sentinel error raised by the shipper's sync when blockMetasFromOldest detects corrupted block metadata among the blocks being uploaded. It is a generic guard: callers (Sync) deliberately compare against it with errors.Is and may skip corrupted blocks when the skipCorruptedBlocks option is set.
Solutions
- Inspect failedBlocks returned by sync to identify the corrupted block IDs
- Delete or repair the corrupted local block metadata (meta.json) and re-sync
- Set --skip-corrupted-blocks to continue uploading healthy blocks while ignoring corrupted ones
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at pkg/shipper/shipper.go:95 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/5e796cdb2cc4e9a1.
Report an issue: GitHub.
Appendix: source
Thrown at pkg/shipper/shipper.go:95
logger log.Logger
dir *os.Root
metrics *metrics
bucket objstore.Bucket
source metadata.SourceType
metadataFilePath string
uploadCompacted bool
allowOutOfOrderUploads bool
skipCorruptedBlocks bool
hashFunc metadata.HashFunc
uploadConcurrency int
labels func() labels.Labels
mtx sync.RWMutex
}
var (
ErrorSyncBlockCorrupted = errors.New("corrupted blocks found")
)
type shipperOptions struct {
logger log.Logger
r prometheus.Registerer
source metadata.SourceType
hashFunc metadata.HashFunc
metaFileName string
lbls func() labels.Labels
uploadCompacted bool
allowOutOfOrderUploads bool
skipCorruptedBlocks bool
uploadConcurrency int
}
type Option func(*shipperOptions)
// WithLogger sets the logger.View on GitHub (pinned to 35b8b99117)