thanos-io/thanos · error
invalid ULID found in --id flag
Error message
invalid ULID found in --id flag
What it means
A ulid.Parse failure on one of the block IDs passed via --id to a bucket inspect/verify command: the string is not a valid 26-character ULID (wrong length, non-canonical Crockford base32 characters). The offending value from the flag is echoed in the message.
Solutions
- Copy the full 26-character ULID from block listings
- Check for truncation or extra whitespace in the flag
- Use `thanos tools bucket ls` to get valid IDs
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at cmd/thanos/tools_bucket.go:398 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/00fc742ada9502ed.
Report an issue: GitHub.
Appendix: source
Thrown at cmd/thanos/tools_bucket.go:398
if err != nil {
return err
}
// We ignore any block that has the deletion marker file.
filters := []block.MetadataFilter{block.NewIgnoreDeletionMarkFilter(logger, insBkt, 0, block.FetcherConcurrency)}
baseBlockIDsFetcher := block.NewConcurrentLister(logger, insBkt)
fetcher, err := block.NewMetaFetcher(logger, block.FetcherConcurrency, insBkt, baseBlockIDsFetcher, "", extprom.WrapRegistererWithPrefix(extpromPrefix, reg), filters)
if err != nil {
return err
}
var idMatcher func(ulid.ULID) bool = nil
if len(tbc.ids) > 0 {
idsMap := map[string]struct{}{}
for _, bid := range tbc.ids {
id, err := ulid.Parse(bid)
if err != nil {
return errors.Wrap(err, "invalid ULID found in --id flag")
}
idsMap[id.String()] = struct{}{}
}
idMatcher = func(id ulid.ULID) bool {
if _, ok := idsMap[id.String()]; !ok {
return false
}
return true
}
}
v := verifier.NewManager(reg, logger, insBkt, backupBkt, fetcher, time.Duration(*deleteDelay), r)
if tbc.repair {
return v.VerifyAndRepair(context.Background(), idMatcher)
}
return v.Verify(context.Background(), idMatcher)View on GitHub (pinned to 35b8b99117)