-
Notifications
You must be signed in to change notification settings - Fork 1k
replay: extend last fec set check for 32+ retransmitter signed shreds #2101
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
8070c3a
498a131
3c2a3a5
9a3445a
f0935ae
2c11c74
4ecfbba
9916e60
b27d78e
c88824c
df32e7b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -3076,37 +3076,22 @@ impl ReplayStage { | |
| } | ||
| } | ||
|
|
||
| if bank.collector_id() != my_pubkey { | ||
| // If the block does not have at least DATA_SHREDS_PER_FEC_BLOCK shreds in the last FEC set, | ||
| // mark it dead. No reason to perform this check on our leader block. | ||
| if !blockstore | ||
| .is_last_fec_set_full(bank.slot()) | ||
| .inspect_err(|e| { | ||
| warn!( | ||
| "Unable to determine if last fec set is full for slot {} {}, | ||
| marking as dead: {e:?}", | ||
| bank.slot(), | ||
| bank.hash() | ||
| ) | ||
| }) | ||
| .unwrap_or(false) | ||
| { | ||
| // Update metric regardless of feature flag | ||
| datapoint_warn!( | ||
| "incomplete_final_fec_set", | ||
| ("slot", bank_slot, i64), | ||
| ("hash", bank.hash().to_string(), String) | ||
| ); | ||
| if bank | ||
| .feature_set | ||
| .is_active(&solana_sdk::feature_set::vote_only_full_fec_sets::id()) | ||
| { | ||
| let _block_id = if bank.collector_id() != my_pubkey { | ||
|
AshwinSekar marked this conversation as resolved.
|
||
| // If the block does not have at least DATA_SHREDS_PER_FEC_BLOCK correctly retransmitted | ||
|
bw-solana marked this conversation as resolved.
|
||
| // shreds in the last FEC set, mark it dead. No reason to perform this check on our leader block. | ||
| match blockstore.check_last_fec_set_and_get_block_id( | ||
| bank.slot(), | ||
| bank.hash(), | ||
| &bank.feature_set, | ||
| ) { | ||
| Ok(block_id) => block_id, | ||
| Err(result_err) => { | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Instead of
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It doesn't work because we can't |
||
| let root = bank_forks.read().unwrap().root(); | ||
| Self::mark_dead_slot( | ||
| blockstore, | ||
| bank, | ||
| root, | ||
| &BlockstoreProcessorError::IncompleteFinalFecSet, | ||
| &result_err, | ||
| rpc_subscriptions, | ||
| duplicate_slots_tracker, | ||
| duplicate_confirmed_slots, | ||
|
|
@@ -3120,7 +3105,9 @@ impl ReplayStage { | |
| continue; | ||
| } | ||
| } | ||
| } | ||
| } else { | ||
| None | ||
| }; | ||
|
|
||
| let r_replay_stats = replay_stats.read().unwrap(); | ||
| let replay_progress = bank_progress.replay_progress.clone(); | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.