thanos-io/thanos · error
block.id is not a valid UUID, got
Error message
block.id is not a valid UUID, got: %v
What it means
A ulid.Parse failure in the mark-block command: one of the --block IDs passed on the command line is not a valid ULID, so a mark file cannot be addressed in the bucket. The malformed value is echoed in the message.
Solutions
- Provide the correct 26-character ULID
- Get IDs via `thanos tools bucket ls`
- Check for whitespace or truncation in the flag
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at cmd/thanos/tools_bucket.go:1118 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/3bb140e2db3a1ae0.
Report an issue: GitHub.
Appendix: source
Thrown at cmd/thanos/tools_bucket.go:1118
tbc.registerBucketMarkBlockFlag(cmd)
cmd.Setup(func(g *run.Group, logger log.Logger, reg *prometheus.Registry, _ opentracing.Tracer, _ <-chan struct{}, _ bool) error {
confContentYaml, err := objStoreConfig.Content()
if err != nil {
return err
}
bkt, err := client.NewBucket(logger, confContentYaml, component.Mark.String(), nil)
if err != nil {
return err
}
insBkt := objstoretracing.WrapWithTraces(objstore.WrapWithMetrics(bkt, extprom.WrapRegistererWithPrefix("thanos_", reg), bkt.Name()))
var ids []ulid.ULID
for _, id := range tbc.blockIDs {
u, err := ulid.Parse(id)
if err != nil {
return errors.Errorf("block.id is not a valid UUID, got: %v", id)
}
ids = append(ids, u)
}
if !tbc.removeMarker && tbc.details == "" {
return errors.Errorf("required flag --details not provided")
}
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute)
g.Add(func() error {
for _, id := range ids {
if tbc.removeMarker {
err := block.RemoveMark(ctx, logger, insBkt, id, promauto.With(nil).NewCounter(prometheus.CounterOpts{}), tbc.marker)
if err != nil {
return errors.Wrapf(err, "remove mark %v for %v", id, tbc.marker)
}
continue
}View on GitHub (pinned to 35b8b99117)