thanos-io/thanos · error
unknown error while processing Series
Error message
unknown error while processing Series: %v
What it means
The recoverableStoreServer panic-recovery handler caught a panic in the Series RPC handler whose value is not a runtime.Error (e.g. a nil-pointer dereference wrapped value or an explicit panic from a bug). Instead of crashing the server it is downgraded to a warning sent to the client; the client sees a partial result with this warning.
Solutions
- Locate the panic via the server logs/stacktrace (the runtime.Error case logs a stack)
- Report or fix the underlying bug in the Series serving path
- Restart or drain the affected store-gateway if it repeatedly panics
- Check the panic is not caused by corrupted block data (run bucket verify)
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at pkg/store/recover.go:48 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/07cce29aad47e9c4.
Report an issue: GitHub.
Appendix: source
Thrown at pkg/store/recover.go:48
func (r *recoverableStoreServer) recover(srv storepb.Store_SeriesServer) {
e := recover()
if e == nil {
return
}
switch err := e.(type) {
case runtime.Error:
// Print the stack trace but do not inhibit the running application.
buf := make([]byte, 64<<10)
buf = buf[:runtime.Stack(buf, false)]
level.Error(r.logger).Log("msg", "runtime panic in TSDB Series server", "err", err.Error(), "stacktrace", string(buf))
if err := srv.Send(storepb.NewWarnSeriesResponse(err)); err != nil {
level.Error(r.logger).Log("err", err)
}
default:
if err := srv.Send(storepb.NewWarnSeriesResponse(errors.New(fmt.Sprintf("unknown error while processing Series: %v", e)))); err != nil {
level.Error(r.logger).Log("err", err)
}
}
}
View on GitHub (pinned to 35b8b99117)