v1.18: replay: only vote on blocks with >= 32 data shreds in last fec set (backport of #1002)#1410
v1.18: replay: only vote on blocks with >= 32 data shreds in last fec set (backport of #1002)#1410mergify[bot] wants to merge 2 commits intov1.18from
Conversation
|
Cherry-pick of 8c67696 has failed: To fix up this pull request, you can check it out locally. See documentation: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally |
…1002) * replay: only vote on blocks with >= 32 data shreds in last fec set * pr feedback: pub(crate), inspect_err * pr feedback: error variants, collapse function, dedup * pr feedback: remove set_last_in_slot, rework test * pr feedback: add metric, perform check regardless of ff * pr feedback: mark block as dead rather than duplicate * pr feedback: self.meta, const_assert, no collect * pr feedback: cfg(test) assertion, remove expect and collect, error fmt * Keep the collect to preserve error * pr feedback: do not hold bank_forks lock for mark_dead_slot (cherry picked from commit 8c67696) # Conflicts: # core/src/replay_stage.rs # ledger/src/blockstore_processor.rs # sdk/src/feature_set.rs
70e63fc to
8f52b4d
Compare
8f52b4d to
dc58ee9
Compare
|
This backport checks if the last FEC set of a replayed block is "full" (sufficient # of shreds to have undergone meaningful duplicate block prevention checks). If it is not "full", or if I believe this change to be unintrusive when the feature flag is off, and will allow us to begin collecting metrics on mainnet 1.18. This will give us the confidence to eventually turn on the feature flag, once the remaining duplicate block prevention feature flags in the queue are turned on. |
Continued from solana-labs#35024
Problem
In order to ensure that the last erasure batch was sufficiently propagated through turbine, we verify that 32+ shreds are received from turbine or repair.
Summary of Changes
#639 pads the last erasure batch with empty data shreds such that there are at least >= 32 data shreds.
Once a block has finished replay, we can check if the last FEC set is full by seeing if there are >= 32 data shreds with the same merkle root. This implies that at least 32 data or coding shreds were received through turbine or repair.
This is an automatic backport of pull request #1002 done by [Mergify](https://mergify.com).