WAL mid-file CRC must not drop later DIRTY marks - #90
Merged
Conversation
Same 20 B CRC32-iSCSI frames as rustlib/wal. Flip record 2 (or record 1); later CRC-ok seqs must survive. This fails on current main.
Same 20 B framing. Mid-file CRC miss used to look like a torn tail, so WriteCache::open rewrote only the prefix and deleted later seqs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Same 20 B CRC32-iSCSI frames as rustlib/wal. Replay stopped at the first CRC miss, then
WriteCache::openrewrote only the prefix (60 B → 20 B) and deleted later seqs. Recovery never marked those blocks DIRTY.Two commits: tests that fail on main (mid-file and first-record CRC), then skip-one-record on
InvalidData. Torn short reads still stop.git checkout HEAD~1 && cargo test --lib test_wal_crc_corruptionfails; HEAD passes.