thanos-io/thanos · error
unable to create new hashring from config
Error message
unable to create new hashring from config
What it means
receive.NewMultiHashring failed while applying a new hashring config update, e.g. invalid algorithm/endpoint combination or malformed endpoints. The goroutine returns the error, terminating the run group.
Solutions
- Check the hashring algorithm flag matches the config
- Validate endpoints format (host:port)
- Review replicationFactor and registry options
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at cmd/thanos/receive.go:665 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/13f2389d972fa1b3.
Report an issue: GitHub.
Appendix: source
Thrown at cmd/thanos/receive.go:665
if enableIngestion {
defer close(hashringChangedChan)
}
for {
select {
case c, ok := <-updates:
if !ok {
return nil
}
if c == nil {
webHandler.Hashring(receive.SingleNodeHashring(conf.endpoint))
level.Info(logger).Log("msg", "Empty hashring config. Set up single node hashring.")
} else {
h, err := receive.NewMultiHashring(algorithm, conf.replicationFactor, c, reg)
if err != nil {
return errors.Wrap(err, "unable to create new hashring from config")
}
webHandler.Hashring(h)
level.Info(logger).Log("msg", "Set up hashring for the given hashring config.")
}
if err := dbs.SetHashringConfig(c); err != nil {
return errors.Wrap(err, "failed to set hashring config in MultiTSDB")
}
// If ingestion is enabled, send a signal to TSDB to flush.
if enableIngestion {
hashringChangedChan <- struct{}{}
} else {
// If not, just signal we are ready (this is important during first hashring load)
statusProber.Ready()
}
case <-cancel:
return nilView on GitHub (pinned to 35b8b99117)