diff --git a/core/src/cluster_nodes.rs b/core/src/cluster_nodes.rs index 58b004fc1b8799..4a1f3a83eba26b 100644 --- a/core/src/cluster_nodes.rs +++ b/core/src/cluster_nodes.rs @@ -576,11 +576,7 @@ fn enable_turbine_fanout_experiments(shred_slot: Slot, root_bank: &Bank) -> bool // Returns true if the feature is effective for the shred slot. #[must_use] -pub(crate) fn check_feature_activation( - feature: &Pubkey, - shred_slot: Slot, - root_bank: &Bank, -) -> bool { +fn check_feature_activation(feature: &Pubkey, shred_slot: Slot, root_bank: &Bank) -> bool { match root_bank.feature_set.activated_slot(feature) { None => false, Some(feature_slot) => { diff --git a/core/src/shred_fetch_stage.rs b/core/src/shred_fetch_stage.rs index 95383f61e71129..984190452a9656 100644 --- a/core/src/shred_fetch_stage.rs +++ b/core/src/shred_fetch_stage.rs @@ -1,16 +1,13 @@ //! The `shred_fetch_stage` pulls shreds from UDP sockets and sends it to a channel. use { - crate::{cluster_nodes::check_feature_activation, serve_repair::ServeRepair}, + crate::serve_repair::ServeRepair, crossbeam_channel::{unbounded, Sender}, solana_gossip::cluster_info::ClusterInfo, solana_ledger::shred::{should_discard_shred, ShredFetchStats}, solana_perf::packet::{PacketBatch, PacketBatchRecycler, PacketFlags}, - solana_runtime::{bank::Bank, bank_forks::BankForks}, - solana_sdk::{ - clock::{Slot, DEFAULT_MS_PER_SLOT}, - feature_set, - }, + solana_runtime::bank_forks::BankForks, + solana_sdk::clock::DEFAULT_MS_PER_SLOT, solana_streamer::streamer::{self, PacketBatchReceiver, StreamerReceiveStats}, std::{ net::UdpSocket, @@ -47,7 +44,7 @@ impl ShredFetchStage { // In the case of bank_forks=None, setup to accept any slot range let mut root_bank = bank_forks.read().unwrap().root_bank(); - let mut last_root = 0; + let mut last_root = root_bank.slot(); let mut last_slot = std::u64::MAX; let mut slots_per_epoch = 0; @@ -85,19 +82,10 @@ impl ShredFetchStage { // Limit shreds to 2 epochs away. let max_slot = last_slot + 2 * slots_per_epoch; - let should_drop_merkle_shreds = - |shred_slot| should_drop_merkle_shreds(shred_slot, &root_bank); let turbine_disabled = turbine_disabled.load(Ordering::Relaxed); for packet in packet_batch.iter_mut().filter(|p| !p.meta().discard()) { if turbine_disabled - || should_discard_shred( - packet, - last_root, - max_slot, - shred_version, - should_drop_merkle_shreds, - &mut stats, - ) + || should_discard_shred(packet, last_root, max_slot, shred_version, &mut stats) { packet.meta_mut().set_discard(true); } else { @@ -232,19 +220,6 @@ impl ShredFetchStage { } } -#[must_use] -fn should_drop_merkle_shreds(shred_slot: Slot, root_bank: &Bank) -> bool { - check_feature_activation( - &feature_set::keep_merkle_shreds::id(), - shred_slot, - root_bank, - ) && !check_feature_activation( - &feature_set::drop_merkle_shreds::id(), - shred_slot, - root_bank, - ) -} - #[cfg(test)] mod tests { use { @@ -285,7 +260,6 @@ mod tests { last_root, max_slot, shred_version, - |_| false, // should_drop_merkle_shreds &mut stats, )); let coding = solana_ledger::shred::Shredder::generate_coding_shreds( @@ -299,7 +273,6 @@ mod tests { last_root, max_slot, shred_version, - |_| false, // should_drop_merkle_shreds &mut stats, )); } @@ -321,7 +294,6 @@ mod tests { last_root, max_slot, shred_version, - |_| false, // should_drop_merkle_shreds &mut stats, )); assert_eq!(stats.index_overrun, 1); @@ -343,18 +315,12 @@ mod tests { 3, max_slot, shred_version, - |_| false, // should_drop_merkle_shreds &mut stats, )); assert_eq!(stats.slot_out_of_range, 1); assert!(should_discard_shred( - &packet, - last_root, - max_slot, - 345, // shred_version - |_| false, // should_drop_merkle_shreds - &mut stats, + &packet, last_root, max_slot, /*shred_version:*/ 345, &mut stats, )); assert_eq!(stats.shred_version_mismatch, 1); @@ -364,7 +330,6 @@ mod tests { last_root, max_slot, shred_version, - |_| false, // should_drop_merkle_shreds &mut stats, )); @@ -386,7 +351,6 @@ mod tests { last_root, max_slot, shred_version, - |_| false, // should_drop_merkle_shreds &mut stats, )); @@ -398,7 +362,6 @@ mod tests { last_root, max_slot, shred_version, - |_| false, // should_drop_merkle_shreds &mut stats, )); } diff --git a/ledger/src/shred.rs b/ledger/src/shred.rs index e1bce18f8f71a5..10d9495216ce76 100644 --- a/ledger/src/shred.rs +++ b/ledger/src/shred.rs @@ -895,7 +895,6 @@ pub fn should_discard_shred( root: Slot, max_slot: Slot, shred_version: u16, - should_drop_merkle_shreds: impl Fn(Slot) -> bool, stats: &mut ShredFetchStats, ) -> bool { debug_assert!(root < max_slot); @@ -984,15 +983,9 @@ pub fn should_discard_shred( match shred_variant { ShredVariant::LegacyCode | ShredVariant::LegacyData => (), ShredVariant::MerkleCode(_) => { - if should_drop_merkle_shreds(slot) { - return true; - } stats.num_shreds_merkle_code = stats.num_shreds_merkle_code.saturating_add(1); } ShredVariant::MerkleData(_) => { - if should_drop_merkle_shreds(slot) { - return true; - } stats.num_shreds_merkle_data = stats.num_shreds_merkle_data.saturating_add(1); } } @@ -1192,7 +1185,6 @@ mod tests { root, max_slot, shred_version, - |_| false, // should_drop_merkle_shreds &mut stats )); assert_eq!(stats, ShredFetchStats::default()); @@ -1203,7 +1195,6 @@ mod tests { root, max_slot, shred_version, - |_| false, // should_drop_merkle_shreds &mut stats )); assert_eq!(stats.index_overrun, 1); @@ -1214,7 +1205,6 @@ mod tests { root, max_slot, shred_version, - |_| false, // should_drop_merkle_shreds &mut stats )); assert_eq!(stats.index_overrun, 2); @@ -1225,7 +1215,6 @@ mod tests { root, max_slot, shred_version, - |_| false, // should_drop_merkle_shreds &mut stats )); assert_eq!(stats.index_overrun, 3); @@ -1236,7 +1225,6 @@ mod tests { root, max_slot, shred_version, - |_| false, // should_drop_merkle_shreds &mut stats )); assert_eq!(stats.index_overrun, 4); @@ -1247,7 +1235,6 @@ mod tests { root, max_slot, shred_version, - |_| false, // should_drop_merkle_shreds &mut stats )); assert_eq!(stats.bad_parent_offset, 1); @@ -1268,7 +1255,6 @@ mod tests { root, max_slot, shred_version, - |_| false, // should_drop_merkle_shreds &mut stats )); @@ -1288,7 +1274,6 @@ mod tests { root, max_slot, shred_version, - |_| false, // should_drop_merkle_shreds &mut stats )); assert_eq!(1, stats.index_out_of_bounds); @@ -1309,7 +1294,6 @@ mod tests { root, max_slot, shred_version, - |_| false, // should_drop_merkle_shreds &mut stats )); packet.buffer_mut()[OFFSET_OF_SHRED_VARIANT] = u8::MAX; @@ -1319,7 +1303,6 @@ mod tests { root, max_slot, shred_version, - |_| false, // should_drop_merkle_shreds &mut stats )); assert_eq!(1, stats.bad_shred_type); @@ -1331,7 +1314,6 @@ mod tests { root, max_slot, shred_version, - |_| false, // should_drop_merkle_shreds &mut stats )); assert_eq!(1, stats.bad_shred_type);