thanos-io/thanos · error

fetch label names from store

Error message

fetch label names from store %s

What it means

A fan-out LabelNames RPC to one store in the StoreAPI fan-out failed (connection error, store error, or cancelled errgroup context). The error names the failing store so the query can be attributed; whether it aborts the query or becomes a warning depends on the request's partial-response strategy.

Solutions

  1. Check the failing store's address, health and logs (sidecar/store-gateway/rule)
  2. Verify network reachability and gRPC TLS config between query and store
  3. Retry the query; transient store restarts are a common cause
  4. With partial-response enabled, rerun for the missing data once the store is healthy
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at pkg/store/proxy.go:473 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/5d840bf009cf33dd. Report an issue: GitHub.

Appendix: source

Thrown at pkg/store/proxy.go:473

		PartialResponseStrategy: originalRequest.PartialResponseStrategy,
		Start:                   originalRequest.Start,
		End:                     originalRequest.End,
		Matchers:                append(storeMatchers, MatchersForLabelSets(storeLabelSets)...),
		WithoutReplicaLabels:    originalRequest.WithoutReplicaLabels,
		Hints:                   originalRequest.Hints,
	}

	var (
		warnings []string
		names    [][]string
		mtx      sync.Mutex
		g, gctx  = errgroup.WithContext(ctx)
	)
	for _, st := range stores {
		g.Go(func() error {
			resp, err := st.LabelNames(gctx, r)
			if err != nil {
				err = errors.Wrapf(err, "fetch label names from store %s", st)
				if r.PartialResponseDisabled || r.PartialResponseStrategy == storepb.PartialResponseStrategy_ABORT {
					return err
				}

				mtx.Lock()
				warnings = append(warnings, err.Error())
				mtx.Unlock()
				return nil
			}

			mtx.Lock()
			warnings = append(warnings, resp.Warnings...)
			names = append(names, resp.Names)
			mtx.Unlock()

			return nil
		})
	}

View on GitHub (pinned to 35b8b99117)