Repository navigation
fix: replicate rent and features at reset boundaries - #201
Merged
Merged
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
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.
What changed
Extend the existing signed reset record with the leader-selected lamports-per-byte rate and complete active feature set. Recovery uses the configuration stored at its execution boundary; only after replay does a leader publish its requested startup rent and Engine-default features. Lagging followers switch configuration when they reach that reset.
Quiesce execution and simulation during the transition and refresh dependent SVM environments. Persist sysvars, feature accounts, and locally supplied native and SBF program images as read-only
Runtimestate. Seed features and sysvars only at genesis. Native builtins, precompiles, and supplied SBF programs use the common insert-if-missing startup path, including on initialized databases; existing account images are preserved.Fresh followers start from the newest completed snapshot even when their initial ledger segment is retained. Replaying that segment alone cannot reconstruct migrated or startup-seeded accounts. Established followers continue resuming retained history.
Closes #200
Impact
Reset and account-mode encodings change without migration or backward compatibility; protocol version remains 1. Deprecated Rent fields are not replicated. Rent and feature accessors now return current values rather than startup-fixed references.
Changing locally supplied program bytes at startup does not replace existing account images. Base-chain program mirrors remain volatile and resettable. Followers must start after the source has completed its first snapshot; an unavailable snapshot rejects the fresh connection rather than falling back to replay.
Reviewer notes
The accepted reset-only crash window remains: if a reset becomes durable before its account-state application, existing slot/transaction recovery checks can miss that unapplied tail. Tracking applied-record progress is deferred.
Local Engine, Keeper, Ledger, and Replicator tests passed. The final simplified change passed Replicator tests, workspace Clippy with all features and targets, and formatting checks. Cross-host validator/verifier qualification has not been rerun.