juanfont/headscale · error

%s failed to get IPs: %w

Error message

%s failed to get IPs: %w

What it means

Error "%s failed to get IPs: %w" thrown in juanfont/headscale.

Source

Thrown at integration/tsic/tsic.go:877

	return dockertestutil.ReconnectContainerToNetwork(t.pool, network, t.hostname)
}

// IPs returns the [netip.Addr] of the Tailscale instance.
func (t *TailscaleInContainer) IPs() ([]netip.Addr, error) {
	if len(t.ips) != 0 {
		return t.ips, nil
	}

	// Retry with exponential backoff to handle eventual consistency
	ips, err := backoff.Retry(context.Background(), func() ([]netip.Addr, error) {
		command := []string{
			tailscaleBin,
			"ip",
		}

		result, _, err := t.Execute(command)
		if err != nil {
			return nil, fmt.Errorf("%s failed to get IPs: %w", t.hostname, err)
		}

		ips := make([]netip.Addr, 0)

		for address := range strings.SplitSeq(result, "\n") {
			address = strings.TrimSuffix(address, "\n")
			if len(address) < 1 {
				continue
			}

			ip, err := netip.ParseAddr(address)
			if err != nil {
				return nil, fmt.Errorf("parsing IP %s: %w", address, err)
			}

			ips = append(ips, ip)
		}

View on GitHub (pinned to 565fd254d0)

Solutions

  1. Inspect the wrapped error for the underlying cause and correct the failing condition (failed to get IPs); retry the operation after fixing the input, configuration, or environment.

Example fix

Inspect the wrapped error for the underlying cause and correct the failing condition (failed to get IPs); retry the operation after fixing the input, configuration, or environment.

When it happens

Trigger: Thrown at integration/tsic/tsic.go:877 when the library encounters an invalid state.

Common situations: Retrieving the node's Tailscale IPs failed. Ensure the node is up and 'tailscale status' works inside the container.


AI-assisted analysis of juanfont/headscale@565fd254d0 (2026-08-15). Data as JSON: /api/errors/58a691f45d93ae6b. Report an issue: GitHub.