thanos-io/thanos · error
mark block for deletion from bucket
Error message
mark block %s for deletion from bucket
What it means
A constructor validation guard in NewBucketCompactor: the concurrency argument (from the compactor's --compact.concurrency flag or programmatic callers) is <= 0, which would spin up no worker or panic on semaphore creation. Pure argument-validation failure with no I/O involved.
Solutions
- Check local disk permissions and open file handles
- Verify bucket permissions for deletion marks
- Retry after the wrapped cause is fixed
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at pkg/compact/compact.go:1396 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/d1e1348b93f719d7.
Report an issue: GitHub.
Appendix: source
Thrown at pkg/compact/compact.go:1396
}
level.Info(cg.logger).Log("msg", "finished compacting blocks", "duration", time.Since(groupCompactionBegin),
"duration_ms", time.Since(groupCompactionBegin).Milliseconds(), "result_blocks", compIDStrs, "source_blocks", sourceBlockStr)
return true, compIDs, nil
}
func (cg *Group) deleteBlock(id ulid.ULID, bdir string, blockDeletableChecker BlockDeletableChecker) error {
if err := os.RemoveAll(bdir); err != nil {
return errors.Wrapf(err, "remove old block dir %s", id)
}
if blockDeletableChecker.CanDelete(cg, id) {
// Spawn a new context so we always mark a block for deletion in full on shutdown.
delCtx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)
defer cancel()
level.Info(cg.logger).Log("msg", "marking compacted block for deletion", "old_block", id)
if err := block.MarkForDeletion(delCtx, cg.logger, cg.bkt, id, "source of compacted block", cg.blocksMarkedForDeletion); err != nil {
return errors.Wrapf(err, "mark block %s for deletion from bucket", id)
}
}
return nil
}
// BucketCompactor compacts blocks in a bucket.
type BucketCompactor struct {
logger log.Logger
sy *Syncer
grouper Grouper
comp Compactor
planner Planner
blockDeletableChecker BlockDeletableChecker
compactionLifecycleCallback CompactionLifecycleCallback
compactDir string
bkt objstore.Bucket
concurrency int
skipBlocksWithOutOfOrderChunks boolView on GitHub (pinned to 35b8b99117)