TimeoutNowSelfLearner

onTimeoutNow guard 5: this node is a RaftRole.Learner. A learner never votes and must never start an election.

Terminal and unshadowed — nothing downstream of it refuses anything, so no other guard can stand in for it. A learner runs the leader-pinning path on AppendEntries exactly as a voter does, so it holds a pin, and a same-term frame from its pinned leader clears every guard above: this is all that stops a non-voter campaigning. The §5.2 gate's empty-voters carve-out cites it by name in its own safety argument ("onTimeoutNow refuses to campaign as a Learner regardless"), so deleting it would silently falsify a different guard's stated correctness argument — a cross-guard dependency no state-effect test in either location can express.

Properties

Link copied to clipboard
expect val name: String
Link copied to clipboard
expect val ordinal: Int
Link copied to clipboard

The RaftMetric.WedgeSuspected.Gate a refusal at this gate is reported under, or null when this gate feeds no wedge diagnosis at all.