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

  1. Check the hashring algorithm flag matches the config
  2. Validate endpoints format (host:port)
  3. 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 nil

View on GitHub (pinned to 35b8b99117)