tailscale/tailscale · error

reading parent %s: %v

Error message

reading parent %s: %v

What it means

Raised in computeChainCandidates when loading a candidate's parent AUM from Chonk storage fails with anything other than ErrNotExist. A missing parent is expected (chain start) and skipped; any other storage error is fatal to chain computation.

Source

Thrown at tka/tka.go:109

	// candidates.Oldest needs to be computed by working backwards from
	// head as far as we can.
	iterAgain := true // if there's still work to be done.
	for i := 0; iterAgain; i++ {
		if i >= maxIter {
			return nil, fmt.Errorf("iteration limit exceeded (%d)", maxIter)
		}

		iterAgain = false
		for j := range candidates {
			parentHash, hasParent := candidates[j].Oldest.Parent()
			if hasParent {
				parent, err := storage.AUM(parentHash)
				if err != nil {
					if err == os.ErrNotExist {
						continue
					}
					return nil, fmt.Errorf("reading parent %s: %v", parentHash, err)
				}
				candidates[j].Oldest = parent
				if lastKnownOldest != nil && *lastKnownOldest == parent.Hash() {
					candidates[j].chainsThroughActive = true
				}
				iterAgain = true
			}
		}
	}
	return candidates, nil
}

// pickNextAUM returns the AUM which should be used as the next
// AUM in the chain, possibly applying fork resolution logic.
//
// In other words: given an AUM with 3 children like this:
//
//	  / - 1

View on GitHub (pinned to 6e0912f979)

Solutions

  1. Check the health of the underlying TKA storage backend
  2. Retry the state computation after transient I/O failures clear
  3. Inspect the wrapped storage error for the failing key/hash
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at tka/tka.go:109 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tailscale/tailscale@6e0912f979 (2026-08-18). Data as JSON: /api/errors/8e388aebf00be38b. Report an issue: GitHub.