thanos-io/thanos · error
sending exemplars error to server
Error message
sending exemplars error to server %v
What it means
In the exemplars proxy receive loop, forwarding a warning response (created after a receive error from the exemplars client) back on the gRPC server stream failed, meaning the querying client connection is broken.
Solutions
- Check the client stream state; the caller likely disconnected.
- Log and drop the response; the request is already failing.
- Verify gRPC server Send machinery is healthy.
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at pkg/exemplars/proxy.go:204 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/7832019af97f0b1f.
Report an issue: GitHub.
Appendix: source
Thrown at pkg/exemplars/proxy.go:204
// Not an error if response strategy is warning.
return nil
}
for {
exemplar, err := exemplars.Recv()
if err == io.EOF {
return nil
}
if err != nil {
err = errors.Wrapf(err, "receiving exemplars from exemplars client %v", stream.client)
if stream.request.PartialResponseStrategy == storepb.PartialResponseStrategy_ABORT {
return err
}
if err := stream.server.Send(exemplarspb.NewWarningExemplarsResponse(err)); err != nil {
return errors.Wrapf(err, "sending exemplars error to server %v", stream.server)
}
// Not an error if response strategy is warning.
return nil
}
if w := exemplar.GetWarning(); w != "" {
if err := stream.server.Send(exemplarspb.NewWarningExemplarsResponse(errors.New(w))); err != nil {
return errors.Wrapf(err, "sending exemplars warning to server %v", stream.server)
}
continue
}
select {
case stream.channel <- exemplar.GetData():
case <-ctx.Done():
return ctx.Err()
}
}View on GitHub (pinned to 35b8b99117)