When persist_entries fails in the IO thread (buffered_raft_log.rs:892),
d-engine only logs an error. The Raft loop receives no signal, the node
continues serving, and in Level 2 (MemFirst) mode clients may have already
received ACKs for entries that were never persisted — silent data loss.
Fix: on persist_entries failure, send a fatal/shutdown signal to the Raft
loop so the node exits cleanly, consistent with etcd's behavior.
Affected: buffered_raft_log.rs IO thread, both durable and MemFirst modes.
When
persist_entriesfails in the IO thread (buffered_raft_log.rs:892),d-engine only logs an error. The Raft loop receives no signal, the node
continues serving, and in Level 2 (MemFirst) mode clients may have already
received ACKs for entries that were never persisted — silent data loss.
Fix: on persist_entries failure, send a fatal/shutdown signal to the Raft
loop so the node exits cleanly, consistent with etcd's behavior.
Affected: buffered_raft_log.rs IO thread, both durable and MemFirst modes.