Purge MAX_RECENT_TICK_HASHES

This commit is contained in:
Michael Vines 2019-03-02 16:35:13 -08:00 committed by Grimes
parent 398b78dd97
commit a9a7fc56eb
6 changed files with 13 additions and 15 deletions

View File

@ -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);
}

View File

@ -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 = {

View File

@ -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<Result<()>>)]) -> 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)

View File

@ -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())
}

View File

@ -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);
}

View File

@ -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)