thanos-io/thanos · error

failed to set hashring config in MultiTSDB

Error message

failed to set hashring config in MultiTSDB

What it means

dbs.SetHashringConfig failed to propagate a validated hashring update into the MultiTSDB, meaning tenants mapped to this node cannot be opened/resized. Typically an internal error opening per-tenant DBs.

Solutions

  1. Check MultiTSDB logs for the underlying tenant DB error
  2. Verify disk and permissions on tsdb path
  3. Confirm the new hashring endpoints are consistent
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at cmd/thanos/receive.go:672 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/6123c9db579b9cc7. Report an issue: GitHub.

Appendix: source

Thrown at cmd/thanos/receive.go:672

			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
			}
		}
	}, func(err error) {
		close(cancel)
	},
	)
	return nil

View on GitHub (pinned to 35b8b99117)