Skip to content

fix: WAL persist failure silently ignored — node must exit on IO error #404

Description

@JoshuaChi

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    component:raft-statemachineState machine semantics, apply pipeline, RocksDB/File state machine implementations.concern:correctnessLinearizability, serializability, consistency guarantees across replicas.

    Type

    Fields

    No fields configured for Bug.

    Projects

    Status
    Backlog

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions