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:
//
// / - 1View on GitHub (pinned to 6e0912f979)
Solutions
- Check the health of the underlying TKA storage backend
- Retry the state computation after transient I/O failures clear
- 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.