Restore the previous non-finalized chain if a block is invalid #2478
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.
Motivation
UpdateWith
methods.But when there is an error, we implicitly drop the full non-finalized chain, and reset the state to the finalized tip. This is surprising, and might cause bugs in future. It might also make the code hard to test.
(And throwing away 100 blocks is pretty inefficient, too.)
Solution
Chain.push
method to make it easier to use correctlyvalidate_and_commit
, so it applies to new chains and existing chainsReview
@conradoplg and I worked on the original PR together. This fix conflicts with a bunch of upcoming state PRs, so we should try to get it in soon.
These upcoming PRs will also add tests for this fix.
Reviewer Checklist