juanfont/headscale · error · ErrNodeNotInNodeStore
%w: %d
Error message
%w: %d
What it means
Error "%w: %d" thrown in juanfont/headscale.
Source
Thrown at hscontrol/state/state.go:543
// behind a concurrent admin write such as SetNodeTags. Serialising the
// read+write keeps the database row converging on [NodeStore] instead of
// reverting it to an out-of-date column set.
//
// The same re-read also guards against the node having been deleted (e.g.
// ephemeral logout) between the caller's update and this persist: a missing
// node means we must not re-insert it.
s.persistMu.Lock()
fresh, exists := s.nodeStore.GetNode(node.ID())
if !exists {
s.persistMu.Unlock()
log.Warn().
EmbedObject(node).
Bool("is_ephemeral", node.IsEphemeral()).
Msg("Node no longer exists in NodeStore, skipping database persist to prevent race condition")
return types.NodeView{}, fmt.Errorf("%w: %d", ErrNodeNotInNodeStore, node.ID())
}
nodePtr := fresh.AsStruct()
// Explicitly select all node columns so GORM includes nil/zero-value
// fields (e.g. UserID=nil when converting a user-owned node to tagged).
// Omit "Expiry" here: expiry is only updated through explicit
// SetNodeExpiry calls or re-registration, not during MapRequest updates.
err := s.db.DB.Select(nodeUpdateColumns).Omit("Expiry").Updates(nodePtr).Error
s.persistMu.Unlock()
if err != nil {
return types.NodeView{}, fmt.Errorf("saving node: %w", err)
}
return fresh, nil
}
View on GitHub (pinned to 565fd254d0)
Solutions
- Inspect the wrapped error for the underlying cause and correct the failing condition (); 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 (); retry the operation after fixing the input, configuration, or environment.
When it happens
Trigger: Thrown at hscontrol/state/state.go:543 when the library encounters an invalid state.
Common situations: A state lookup for the numeric ID failed. Verify the referenced node or user ID exists.
AI-assisted analysis of juanfont/headscale@565fd254d0 (2026-08-15).
Data as JSON: /api/errors/505d49daf2e4ffd1.
Report an issue: GitHub.