fix(exex): skip missing notification files when filling the WAL block cache - #17
fix(exex): skip missing notification files when filling the WAL block cache#17jowparks wants to merge 2 commits into
Conversation
… cache `WalInner::commit` consumes the next file ID before writing the notification, so a failed write (e.g. a full disk) leaves a permanent hole in the file ID range. On the next boot `fill_block_cache` walks `min..=max` and fails with `WalError::FileNotFound`, which propagates out of `Wal::new` in `ExExLauncher::launch` and aborts node startup. The node then crash-loops until the WAL directory is deleted by hand. Log a warning and skip the missing file instead. Other `WalError` variants still abort as before.
`needless_range_loop` in `testnet.rs` and `needless_bool` in `fetcher.rs` fail CI on this branch independently of the WAL change.
|
Closing in favour of an upstream report: paradigmxyz#26813. The diagnosis in this PR is wrong about the cause. It blames The actual cause is There is a deterministic unit test in the upstream issue that reproduces this on unmodified The Branch |
A hole in the ExEx WAL file ID range currently makes the node unbootable:
fill_block_cachewalksmin..=maxand propagatesWalError::FileNotFoundout ofWal::new, aborting startup. Warn and skip the missing file instead; otherWalErrorvariants still abort.Hit on the Base shadow builder, which crash-looped on boot until
<datadir>/exex/walwas deleted by hand:Holes are reachable because
WalInner::commitconsumes the next file ID before writing, so a failed write (the shadow builder had filled its SSD) burns the ID permanently. Not addressed here.Second commit fixes two unrelated clippy lints in
reth-networkthat a newer toolchain flags; they fail CI on this branch regardless of this change.denyis also red on this branch for RUSTSEC-2026-0258 (h2), which needs a lockfile bump and is out of scope here.