fix(cluster) - #258
Conversation
…_timeout_ms B3 (2026-08-26): RAFT_READY_TIMEOUT=30s hardcoded vs replay of a large raft log (>150k entries) exceeding 30s — ReadyGate Failed, process alive but port dead. New [server] raft_ready_timeout_ms config key (default 30_000 keeps existing behaviour).
e962aac to
9c785b0
Compare
Closing. The bug is real, but the 30s deadline spans two phases with different failure semantics, and a config key asks the operator for a number derived from their log size.
The gate's own comment ( The fixStart the readiness deadline when the raft loop begins ticking, not when 30s then means 30s to elect and apply the first entry. That is correct for a 1k-entry log and a 10M-entry one alike, and it still catches a wedged group in 30s rather than 300s. It needs one more signal out of The worse half of #253 is untouchedThe issue reports two symptoms: boot fails at 30s, and the process stays alive with every port dead until force-stop and wipe. This PR addresses the first.
#253 stays open for both. Secondary
|
Bug Description
raft readiness timeout is hardcoded to 30s — large replay wedges the node
Steps to Reproduce
await_cluster_readyusesRAFT_READY_TIMEOUT = Duration::from_secs(30)(nodedb/src/bootstrap/cluster_ready.rs:54) while the replay path allows 300s.raft_gate.fail("raft readiness timeout after 30s")→ ReadyGate Failed → process alive, all ports dead (deadlock).Expected Behavior
Node finishes replay and becomes ready regardless of replay duration; operator can raise the timeout for large logs.
Actual Behavior
Boot fails after 30s with no way to override; node deadlocks (process alive, ports dead) until force-stop + wipe.
Environment
Proposed Fix
New
[server] raft_ready_timeout_msconfig key (Option, default 30_000 = unchanged behaviour). Passed throughmain.rs→await_cluster_ready. Config:raft_ready_timeout_ms = 300000.Files: section.rs, cluster_ready.rs, main.rs. cargo check clean.
Closes #253