thanos-io/thanos · error
receive series from
Error message
receive series from %s
What it means
The gRPC stream Recv() for a Series call returned an error (non-EOF) while lazily pulling series from a store. This is the generic receive failure — RPC error, stream reset, deadline, or store-side failure — wrapped with the store address for attribution; it surfaces as a warning when partial responses are enabled.
Solutions
- Check the named store's logs for the RPC failure cause
- Verify gRPC keepalive, timeouts and connection limits between query and store
- Retry the query; transient stream resets are common under load
- Use partial responses to keep results from healthy stores
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at pkg/store/proxy_merge.go:491 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/c86b520b5156d592.
Report an issue: GitHub.
Appendix: source
Thrown at pkg/store/proxy_merge.go:491
resp, err := cl.Recv()
if err != nil {
if err == io.EOF {
l.bufferedResponsesMtx.Lock()
l.noMoreData = true
l.dataOrFinishEvent.Signal()
l.bufferedResponsesMtx.Unlock()
return false
}
var rerr error
// If timer is already stopped
if t != nil && !t.Stop() {
if t.C != nil {
<-t.C // Drain the channel if it was already stopped.
}
rerr = errors.Wrapf(err, "failed to receive any data in %s from %s", l.frameTimeout, st)
} else {
rerr = errors.Wrapf(err, "receive series from %s", st)
}
l.bufferedResponsesMtx.Lock()
l.rb.append(storepb.NewWarnSeriesResponse(rerr))
l.noMoreData = true
l.dataOrFinishEvent.Signal()
l.bufferedResponsesMtx.Unlock()
return false
}
if t != nil {
// frameTimeout only applies to cl.Recv() gRPC call because the goroutine may be blocked on waiting for an empty buffer slot.
// Set the timeout to the largest possible value to avoid triggering it.
t.Reset(time.Duration(math.MaxInt64))
}
numResponses++
bytesProcessed += resp.Size()
if resp.GetSeries() != nil && applySharding && !shardMatcher.MatchesZLabels(resp.GetSeries().Labels) {View on GitHub (pinned to 35b8b99117)