diff --git a/benches/banking_stage.rs b/benches/banking_stage.rs index dadf03bc4b..d021d25f71 100644 --- a/benches/banking_stage.rs +++ b/benches/banking_stage.rs @@ -15,7 +15,7 @@ use solana_sdk::hash::hash; use solana_sdk::pubkey::Pubkey; use solana_sdk::signature::{KeypairUtil, Signature}; use solana_sdk::system_transaction::SystemTransaction; -use solana_sdk::timing::MAX_RECENT_TICK_HASHES; +use solana_sdk::timing::{DEFAULT_TICKS_PER_SLOT, MAX_RECENT_BLOCKHASHES}; use std::iter; use std::sync::atomic::AtomicBool; use std::sync::mpsc::{channel, Receiver}; @@ -122,7 +122,7 @@ fn bench_banking_stage_multi_accounts(bencher: &mut Bencher) { BankingStage::new(&bank, &poh_recorder, verified_receiver, std::u64::MAX); let mut id = genesis_block.hash(); - for _ in 0..MAX_RECENT_TICK_HASHES { + for _ in 0..(MAX_RECENT_BLOCKHASHES * DEFAULT_TICKS_PER_SLOT as usize) { id = hash(&id.as_ref()); bank.register_tick(&id); } @@ -226,7 +226,7 @@ fn bench_banking_stage_multi_programs(bencher: &mut Bencher) { BankingStage::new(&bank, &poh_recorder, verified_receiver, std::u64::MAX); let mut id = genesis_block.hash(); - for _ in 0..MAX_RECENT_TICK_HASHES { + for _ in 0..(MAX_RECENT_BLOCKHASHES * DEFAULT_TICKS_PER_SLOT as usize) { id = hash(&id.as_ref()); bank.register_tick(&id); } diff --git a/core/src/banking_stage.rs b/core/src/banking_stage.rs index c5e9455063..80caa9a041 100644 --- a/core/src/banking_stage.rs +++ b/core/src/banking_stage.rs @@ -13,7 +13,7 @@ use crate::sigverify_stage::VerifiedPackets; use bincode::deserialize; use solana_metrics::counter::Counter; use solana_runtime::bank::{self, Bank, BankError}; -use solana_sdk::timing::{self, duration_as_us, MAX_RECENT_TICK_HASHES}; +use solana_sdk::timing::{self, duration_as_us, MAX_RECENT_BLOCKHASHES}; use solana_sdk::transaction::Transaction; use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::mpsc::{channel, Receiver, RecvTimeoutError}; @@ -170,7 +170,7 @@ impl BankingStage { // TODO: Banking stage threads should be prioritized to complete faster then this queue // expires. let (loaded_accounts, results) = - bank.load_and_execute_transactions(txs, lock_results, MAX_RECENT_TICK_HASHES / 2); + bank.load_and_execute_transactions(txs, lock_results, MAX_RECENT_BLOCKHASHES / 2); let load_execute_time = now.elapsed(); let record_time = { diff --git a/core/src/blocktree_processor.rs b/core/src/blocktree_processor.rs index a5dd5075ed..2d5cfa7043 100644 --- a/core/src/blocktree_processor.rs +++ b/core/src/blocktree_processor.rs @@ -7,7 +7,7 @@ use solana_metrics::counter::Counter; use solana_runtime::bank::{Bank, BankError, Result}; use solana_sdk::genesis_block::GenesisBlock; use solana_sdk::timing::duration_as_ms; -use solana_sdk::timing::MAX_RECENT_TICK_HASHES; +use solana_sdk::timing::MAX_RECENT_BLOCKHASHES; use std::sync::Arc; use std::time::Instant; @@ -35,7 +35,7 @@ fn par_execute_entries(bank: &Bank, entries: &[(&Entry, Vec>)]) -> Re let results = bank.load_execute_and_commit_transactions( &e.transactions, lock_results.to_vec(), - MAX_RECENT_TICK_HASHES, + MAX_RECENT_BLOCKHASHES, ); bank.unlock_accounts(&e.transactions, &results); first_err(&results) diff --git a/runtime/benches/bank.rs b/runtime/benches/bank.rs index bb7a31dcf5..7fbc016ce3 100644 --- a/runtime/benches/bank.rs +++ b/runtime/benches/bank.rs @@ -7,7 +7,7 @@ use solana_sdk::genesis_block::GenesisBlock; use solana_sdk::hash::hash; use solana_sdk::signature::{Keypair, KeypairUtil}; use solana_sdk::system_transaction::SystemTransaction; -use solana_sdk::timing::MAX_RECENT_TICK_HASHES; +use solana_sdk::timing::{DEFAULT_TICKS_PER_SLOT, MAX_RECENT_BLOCKHASHES}; use test::Bencher; #[bench] @@ -43,7 +43,7 @@ fn bench_process_transaction(bencher: &mut Bencher) { let mut id = bank.last_blockhash(); - for _ in 0..(MAX_RECENT_TICK_HASHES - 1) { + for _ in 0..(MAX_RECENT_BLOCKHASHES * DEFAULT_TICKS_PER_SLOT as usize) { bank.register_tick(&id); id = hash(&id.as_ref()) } diff --git a/runtime/src/hash_queue.rs b/runtime/src/hash_queue.rs index de5e771b7a..75f6dd3bdf 100644 --- a/runtime/src/hash_queue.rs +++ b/runtime/src/hash_queue.rs @@ -105,12 +105,11 @@ mod tests { use super::*; use bincode::serialize; use solana_sdk::hash::hash; - use solana_sdk::timing::MAX_RECENT_TICK_HASHES; #[test] fn test_register_hash() { let last_hash = Hash::default(); - let mut entry_queue = HashQueue::new(MAX_RECENT_TICK_HASHES); + let mut entry_queue = HashQueue::new(100); assert!(!entry_queue.check_entry(last_hash)); entry_queue.register_hash(&last_hash); assert!(entry_queue.check_entry(last_hash)); @@ -119,8 +118,8 @@ mod tests { #[test] fn test_reject_old_last_hash() { let last_hash = Hash::default(); - let mut entry_queue = HashQueue::new(MAX_RECENT_TICK_HASHES); - for i in 0..MAX_RECENT_TICK_HASHES { + let mut entry_queue = HashQueue::new(100); + for i in 0..100 { let last_hash = hash(&serialize(&i).unwrap()); // Unique hash entry_queue.register_hash(&last_hash); } diff --git a/sdk/src/timing.rs b/sdk/src/timing.rs index 8448a31149..f992143c43 100644 --- a/sdk/src/timing.rs +++ b/sdk/src/timing.rs @@ -17,9 +17,8 @@ pub const DEFAULT_SLOTS_PER_EPOCH: u64 = 64; /// not be processed by the network. pub const MAX_HASH_AGE_IN_SECONDS: usize = 120; -pub const MAX_RECENT_TICK_HASHES: usize = NUM_TICKS_PER_SECOND as usize * MAX_HASH_AGE_IN_SECONDS; pub const MAX_RECENT_BLOCKHASHES: usize = - MAX_RECENT_TICK_HASHES / (DEFAULT_TICKS_PER_SLOT as usize); + (NUM_TICKS_PER_SECOND * MAX_HASH_AGE_IN_SECONDS as u64 / DEFAULT_TICKS_PER_SLOT) as usize; pub fn duration_as_us(d: &Duration) -> u64 { (d.as_secs() * 1000 * 1000) + (u64::from(d.subsec_nanos()) / 1_000)