Repository navigation
refactor: frame AOF and snapshot records with a checked length - #450
Merged
Merged
Conversation
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.
Theme 6 from the persistence audit, plus the torn-tail and snapshot TTL bugs it makes fixable.
New file layout (version 5). The AOF and snapshots share a header and a frame format, in the new
framemodule:Bugs this fixes
Simplifications
Codecenum (plain or encrypted) replaces the#[cfg(feature = "encryption")]branches in the readers and writers.frame::Keyis uninhabited without the feature, so the internal paths takeOption<&Key>in every build. That also removed the key alias and cfg branches in recovery.AofRecord::from_bytesand snapshot entries reject trailing bytes.CrcReaderis gone.Not done: the
RecoveryOutcomeenum from theme 6. After #423,RecoveryResulthas two flags, and both lead to the same action.Tests
Performance: AOF writes with
everysecare unchanged within noise: 851k–863k against 854k–875k SET/s without pipelining, and 2.53M–2.67M against 2.55M–2.59M with a pipeline of 16.