thanos-io/thanos · error

Address is empty.

Error message

Address is empty.

What it means

validateAddrs (used by the repeatable address flags) rejects an address slice containing an empty string, meaning a peer/endpoint address was supplied as blank — usually an empty list entry or an unfilled environment substitution.

Solutions

  1. Provide a non-empty host:port address.
  2. Check for unset environment variables substituted into the flag.
  3. Remove empty entries from the address list.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at pkg/extkingpin/flags.go:54 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/ee2934b1285c7faa. Report an issue: GitHub.

Appendix: source

Thrown at pkg/extkingpin/flags.go:54

	return strings.Join(*a, ",")
}

// Ensure flag is repeatable.
func (a *addressSlice) IsCumulative() bool {
	return true
}

func Addrs(flags *kingpin.FlagClause) (target *addressSlice) {
	target = &addressSlice{}
	flags.SetValue((*addressSlice)(target))
	return
}

// validateAddrs checks an address slice for empty or invalid elements.
func validateAddrs(addrs addressSlice) error {
	for _, addr := range addrs {
		if addr == "" {
			return errors.New("Address is empty.")
		}

		qtypeAndName := strings.SplitN(addr, "+", 2)
		hostAndPort := strings.SplitN(addr, ":", 2)
		if len(qtypeAndName) != 2 && len(hostAndPort) != 2 {
			return errors.Errorf("Address %s is not of <host>:<port> format or a valid DNS query.", addr)
		}
	}

	return nil
}

// RegisterHTTPFlags register flags commonly used to configure http servers with.
func RegisterHTTPFlags(cmd FlagClause) (httpBindAddr *string, httpGracePeriod *model.Duration, httpTLSConfig *string) {
	httpBindAddr = cmd.Flag("http-address", "Listen host:port for HTTP endpoints.").Default("0.0.0.0:10902").String()
	httpGracePeriod = ModelDuration(cmd.Flag("http-grace-period", "Time to wait after an interrupt received for HTTP Server.").Default("2m")) // by default it's the same as query.timeout.
	httpTLSConfig = cmd.Flag(
		"http.config",

View on GitHub (pinned to 35b8b99117)