thanos-io/thanos · error
fetch series for
Error message
fetch series for %s %s
What it means
The initial Series RPC to a store failed before any streaming began, so no async response set could be created for that store. The wrapped error carries the store identity and address; depending on the partial-response strategy it either fails the query or is emitted as a warning series while other stores' results continue.
Solutions
- Verify the failing store is running and its StoreAPI endpoint is correct
- Check gRPC TLS, timeouts and service discovery for the query-to-store path
- Inspect store logs for why the Series call was rejected (e.g. cancel, invalid request)
- Retry once the store is healthy; combine with partial-response mode
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at pkg/store/proxy_merge.go:602 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/9c6455e052a4433c.
Report an issue: GitHub.
Appendix: source
Thrown at pkg/store/proxy_merge.go:602
var cancel context.CancelFunc
storeID, storeAddr := storeInfo(st)
seriesCtx := grpc_opentracing.ClientAddContextTags(ctx, opentracing.Tags{
"target": storeAddr,
})
seriesCtx, cancel = context.WithCancel(seriesCtx)
shardMatcher := shardInfo.Matcher(buffers)
applySharding := shardInfo != nil && !st.SupportsSharding()
if applySharding {
level.Debug(logger).Log("msg", "Applying series sharding in the proxy since there is not support in the underlying store", "store", st.String())
}
cl, err := st.Series(seriesCtx, req)
if err != nil {
err = errors.Wrapf(err, "fetch series for %s %s", storeID, st)
cancel()
return nil, err
}
var labelsToRemove map[string]struct{}
if !st.SupportsWithoutReplicaLabels() && len(req.WithoutReplicaLabels) > 0 {
level.Warn(logger).Log("msg", "detecting store that does not support without replica label setting. "+
"Falling back to eager retrieval with additional sort. Make sure your storeAPI supports it to speed up your queries", "store", st.String())
retrievalStrategy = EagerRetrieval
labelsToRemove = make(map[string]struct{})
for _, replicaLabel := range req.WithoutReplicaLabels {
labelsToRemove[replicaLabel] = struct{}{}
}
}
switch retrievalStrategy {
case LazyRetrieval:View on GitHub (pinned to 35b8b99117)