From c86c258b883df4a9c449bde7ccbc31ac45a88ccd Mon Sep 17 00:00:00 2001 From: behzad nouri Date: Tue, 16 Jul 2024 15:40:07 -0500 Subject: [PATCH] uses MAX_LEADER_SCHEDULE_STAKES for cluster-nodes cache capacity Because of the TTL based eviction it does not make sense to cache more than MAX_LEADER_SCHEDULE_STAKES epochs. --- turbine/src/broadcast_stage.rs | 6 ++++-- turbine/src/retransmit_stage.rs | 9 +++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/turbine/src/broadcast_stage.rs b/turbine/src/broadcast_stage.rs index c13d72ee46159a..cce43f4fa5aabd 100644 --- a/turbine/src/broadcast_stage.rs +++ b/turbine/src/broadcast_stage.rs @@ -20,7 +20,7 @@ use { solana_measure::measure::Measure, solana_metrics::{inc_new_counter_error, inc_new_counter_info}, solana_poh::poh_recorder::WorkingBankEntry, - solana_runtime::bank_forks::BankForks, + solana_runtime::{bank::MAX_LEADER_SCHEDULE_STAKES, bank_forks::BankForks}, solana_sdk::{ clock::Slot, pubkey::Pubkey, @@ -31,6 +31,7 @@ use { sendmmsg::{batch_send, SendPktsError}, socket::SocketAddrSpace, }, + static_assertions::const_assert_eq, std::{ collections::{HashMap, HashSet}, net::{SocketAddr, UdpSocket}, @@ -52,7 +53,8 @@ pub(crate) mod broadcast_utils; mod fail_entry_verification_broadcast_run; mod standard_broadcast_run; -const CLUSTER_NODES_CACHE_NUM_EPOCH_CAP: usize = 8; +const_assert_eq!(CLUSTER_NODES_CACHE_NUM_EPOCH_CAP, 5); +const CLUSTER_NODES_CACHE_NUM_EPOCH_CAP: usize = MAX_LEADER_SCHEDULE_STAKES as usize; const CLUSTER_NODES_CACHE_TTL: Duration = Duration::from_secs(5); pub(crate) type RecordReceiver = Receiver<(Arc>, Option)>; diff --git a/turbine/src/retransmit_stage.rs b/turbine/src/retransmit_stage.rs index c4c7a751ab24ce..32537db6b9abe9 100644 --- a/turbine/src/retransmit_stage.rs +++ b/turbine/src/retransmit_stage.rs @@ -19,12 +19,16 @@ use { solana_rayon_threadlimit::get_thread_count, solana_rpc::{max_slots::MaxSlots, rpc_subscriptions::RpcSubscriptions}, solana_rpc_client_api::response::SlotUpdate, - solana_runtime::{bank::Bank, bank_forks::BankForks}, + solana_runtime::{ + bank::{Bank, MAX_LEADER_SCHEDULE_STAKES}, + bank_forks::BankForks, + }, solana_sdk::{clock::Slot, pubkey::Pubkey, timing::timestamp}, solana_streamer::{ sendmmsg::{multi_target_send, SendPktsError}, socket::SocketAddrSpace, }, + static_assertions::const_assert_eq, std::{ collections::HashMap, iter::repeat, @@ -47,7 +51,8 @@ const DEDUPER_RESET_CYCLE: Duration = Duration::from_secs(5 * 60); // Minimum number of shreds to use rayon parallel iterators. const PAR_ITER_MIN_NUM_SHREDS: usize = 2; -const CLUSTER_NODES_CACHE_NUM_EPOCH_CAP: usize = 8; +const_assert_eq!(CLUSTER_NODES_CACHE_NUM_EPOCH_CAP, 5); +const CLUSTER_NODES_CACHE_NUM_EPOCH_CAP: usize = MAX_LEADER_SCHEDULE_STAKES as usize; const CLUSTER_NODES_CACHE_TTL: Duration = Duration::from_secs(5); #[derive(Default)]