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

  1. Provide the correct 26-character ULID
  2. Get IDs via `thanos tools bucket ls`
  3. 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)