This repository has been archived by the owner on Jan 22, 2025. It is now read-only.
Add special handling for snapshot root slot in get_confirmed_block #7430
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.
Problem
Testnet panics when downstream user calls getConfirmedBlock rpc on all slots. (And when all the rpc threads have panicked due to retries, the rpc node becomes unresponsive to further queries.)
In particular, the panic occurs on getConfirmedBlock on the first blocktree root (aside from slot 0). Blocktree::get_confirmed_block assumes a root always has a valid parent slot, but when a node is booted from a snapshot (as the rpc node is on testnet boot), the snapshot root doesn't contain any entries or have a valid parent root in blocktree.
Summary of Changes
previous_blockhash: Hash::default()
)Technically, this means the results of getConfirmedBlock for snapshot root and snapshot root+1 are slightly incorrect. But we expect our main downstream use case to run a node without snapshots, so this should not be an issue.
If it becomes an issue, the more general solution would be to preserve the entries of snapshot root in each snapshot.
This should fix testnet.solana.com, when deployed there.
Fixes #7418