bank::new_with_leader_scheduler_config() - remove Option<>

This commit is contained in:
Michael Vines
2019-02-06 19:35:00 -08:00
parent f789038baa
commit d9e2b94d7a
5 changed files with 23 additions and 27 deletions

View File

@ -130,7 +130,7 @@ impl Default for Bank {
last_id_queue: RwLock::new(LastIdQueue::default()), last_id_queue: RwLock::new(LastIdQueue::default()),
status_cache: RwLock::new(BankStatusCache::default()), status_cache: RwLock::new(BankStatusCache::default()),
confirmation_time: AtomicUsize::new(std::usize::MAX), confirmation_time: AtomicUsize::new(std::usize::MAX),
leader_scheduler: Arc::new(RwLock::new(Default::default())), leader_scheduler: Arc::new(RwLock::new(LeaderScheduler::default())),
subscriptions: RwLock::new(Box::new(Arc::new(LocalSubscriptions::default()))), subscriptions: RwLock::new(Box::new(Arc::new(LocalSubscriptions::default()))),
} }
} }
@ -139,21 +139,20 @@ impl Default for Bank {
impl Bank { impl Bank {
pub fn new_with_leader_scheduler_config( pub fn new_with_leader_scheduler_config(
genesis_block: &GenesisBlock, genesis_block: &GenesisBlock,
leader_scheduler_config_option: Option<&LeaderSchedulerConfig>, leader_scheduler_config: &LeaderSchedulerConfig,
) -> Self { ) -> Self {
let mut bank = Self::default(); let mut bank = Self::default();
if let Some(leader_scheduler_config) = leader_scheduler_config_option {
bank.leader_scheduler = bank.leader_scheduler =
Arc::new(RwLock::new(LeaderScheduler::new(leader_scheduler_config))); Arc::new(RwLock::new(LeaderScheduler::new(leader_scheduler_config)));
}
bank.process_genesis_block(genesis_block); bank.process_genesis_block(genesis_block);
bank.add_builtin_programs(); bank.add_builtin_programs();
bank bank
} }
pub fn new(genesis_block: &GenesisBlock) -> Self { pub fn new(genesis_block: &GenesisBlock) -> Self {
Self::new_with_leader_scheduler_config(genesis_block, None) Self::new_with_leader_scheduler_config(genesis_block, &LeaderSchedulerConfig::default())
} }
pub fn set_subscriptions(&self, subscriptions: Box<Arc<BankSubscriptions + Send + Sync>>) { pub fn set_subscriptions(&self, subscriptions: Box<Arc<BankSubscriptions + Send + Sync>>) {
let mut sub = self.subscriptions.write().unwrap(); let mut sub = self.subscriptions.write().unwrap();
*sub = subscriptions *sub = subscriptions

View File

@ -125,7 +125,7 @@ impl Fullnode {
db_ledger, db_ledger,
ledger_signal_sender, ledger_signal_sender,
ledger_signal_receiver, ledger_signal_receiver,
) = Self::new_bank_from_ledger(ledger_path, Some(&config.leader_scheduler_config)); ) = Self::new_bank_from_ledger(ledger_path, &config.leader_scheduler_config);
info!("node info: {:?}", node.info); info!("node info: {:?}", node.info);
info!("node entrypoint_info: {:?}", entrypoint_info_option); info!("node entrypoint_info: {:?}", entrypoint_info_option);
@ -480,7 +480,7 @@ impl Fullnode {
pub fn new_bank_from_ledger( pub fn new_bank_from_ledger(
ledger_path: &str, ledger_path: &str,
leader_scheduler_config: Option<&LeaderSchedulerConfig>, leader_scheduler_config: &LeaderSchedulerConfig,
) -> (Bank, u64, Hash, DbLedger, SyncSender<bool>, Receiver<bool>) { ) -> (Bank, u64, Hash, DbLedger, SyncSender<bool>, Receiver<bool>) {
let (db_ledger, ledger_signal_sender, ledger_signal_receiver) = let (db_ledger, ledger_signal_sender, ledger_signal_receiver) =
DbLedger::open_with_signal(ledger_path) DbLedger::open_with_signal(ledger_path)
@ -829,8 +829,10 @@ mod tests {
// Close the validator so that rocksdb has locks available // Close the validator so that rocksdb has locks available
validator_exit(); validator_exit();
let (bank, entry_height, _, _, _, _) = let (bank, entry_height, _, _, _, _) = Fullnode::new_bank_from_ledger(
Fullnode::new_bank_from_ledger(&validator_ledger_path, None); &validator_ledger_path,
&LeaderSchedulerConfig::default(),
);
assert!( assert!(
bank.tick_height() bank.tick_height()

View File

@ -523,8 +523,7 @@ pub mod tests {
let num_vote_account_tokens = 1; let num_vote_account_tokens = 1;
let (genesis_block, mint_keypair) = GenesisBlock::new(10_000); let (genesis_block, mint_keypair) = GenesisBlock::new(10_000);
info!("bootstrap_leader_id: {}", genesis_block.bootstrap_leader_id); info!("bootstrap_leader_id: {}", genesis_block.bootstrap_leader_id);
let bank = let bank = Bank::new_with_leader_scheduler_config(&genesis_block, &leader_scheduler_config);
Bank::new_with_leader_scheduler_config(&genesis_block, Some(&leader_scheduler_config));
let mut validators = vec![]; let mut validators = vec![];
let last_id = genesis_block.last_id(); let last_id = genesis_block.last_id();
for i in 0..num_validators { for i in 0..num_validators {
@ -652,8 +651,7 @@ pub mod tests {
let active_window_length = 1000; let active_window_length = 1000;
let leader_scheduler_config = LeaderSchedulerConfig::new(100, 100, active_window_length); let leader_scheduler_config = LeaderSchedulerConfig::new(100, 100, active_window_length);
let (genesis_block, mint_keypair) = GenesisBlock::new_with_leader(10000, leader_id, 500); let (genesis_block, mint_keypair) = GenesisBlock::new_with_leader(10000, leader_id, 500);
let bank = let bank = Bank::new_with_leader_scheduler_config(&genesis_block, &leader_scheduler_config);
Bank::new_with_leader_scheduler_config(&genesis_block, Some(&leader_scheduler_config));
let bootstrap_ids = to_hashset_owned(&vec![genesis_block.bootstrap_leader_id]); let bootstrap_ids = to_hashset_owned(&vec![genesis_block.bootstrap_leader_id]);
@ -971,8 +969,7 @@ pub mod tests {
+ ((((num_validators + 1) / 2) * (num_validators + 1)) + ((((num_validators + 1) / 2) * (num_validators + 1))
+ (num_vote_account_tokens * num_validators)) as u64, + (num_vote_account_tokens * num_validators)) as u64,
); );
let bank = let bank = Bank::new_with_leader_scheduler_config(&genesis_block, &leader_scheduler_config);
Bank::new_with_leader_scheduler_config(&genesis_block, Some(&leader_scheduler_config));
let mut validators = vec![]; let mut validators = vec![];
let last_id = genesis_block.last_id(); let last_id = genesis_block.last_id();
for i in 0..num_validators { for i in 0..num_validators {
@ -1042,8 +1039,7 @@ pub mod tests {
let active_window_length = 1000; let active_window_length = 1000;
let (genesis_block, _mint_keypair) = GenesisBlock::new_with_leader(10000, leader_id, 500); let (genesis_block, _mint_keypair) = GenesisBlock::new_with_leader(10000, leader_id, 500);
let leader_scheduler_config = LeaderSchedulerConfig::new(100, 100, active_window_length); let leader_scheduler_config = LeaderSchedulerConfig::new(100, 100, active_window_length);
let bank = let bank = Bank::new_with_leader_scheduler_config(&genesis_block, &leader_scheduler_config);
Bank::new_with_leader_scheduler_config(&genesis_block, Some(&leader_scheduler_config));
// Bootstrap leader should be in the active set even without explicit votes // Bootstrap leader should be in the active set even without explicit votes
{ {
@ -1113,8 +1109,7 @@ pub mod tests {
// Check that the generate_schedule() function is being called by the // Check that the generate_schedule() function is being called by the
// update_tick_height() function at the correct entry heights. // update_tick_height() function at the correct entry heights.
let (genesis_block, _) = GenesisBlock::new(10_000); let (genesis_block, _) = GenesisBlock::new(10_000);
let bank = let bank = Bank::new_with_leader_scheduler_config(&genesis_block, &leader_scheduler_config);
Bank::new_with_leader_scheduler_config(&genesis_block, Some(&leader_scheduler_config));
let mut leader_scheduler = bank.leader_scheduler.write().unwrap(); let mut leader_scheduler = bank.leader_scheduler.write().unwrap();
info!( info!(
"bootstrap_leader_id: {:?}", "bootstrap_leader_id: {:?}",
@ -1268,8 +1263,7 @@ pub mod tests {
// Create mint and bank // Create mint and bank
let (genesis_block, mint_keypair) = let (genesis_block, mint_keypair) =
GenesisBlock::new_with_leader(10_000, bootstrap_leader_id, BOOTSTRAP_LEADER_TOKENS); GenesisBlock::new_with_leader(10_000, bootstrap_leader_id, BOOTSTRAP_LEADER_TOKENS);
let bank = let bank = Bank::new_with_leader_scheduler_config(&genesis_block, &leader_scheduler_config);
Bank::new_with_leader_scheduler_config(&genesis_block, Some(&leader_scheduler_config));
let last_id = genesis_block.last_id(); let last_id = genesis_block.last_id();
let initial_vote_height = 1; let initial_vote_height = 1;

View File

@ -416,7 +416,7 @@ mod test {
{ {
// Set up the bank // Set up the bank
let (bank, _entry_height, last_entry_id, db_ledger, l_sender, l_receiver) = let (bank, _entry_height, last_entry_id, db_ledger, l_sender, l_receiver) =
Fullnode::new_bank_from_ledger(&my_ledger_path, Some(&leader_scheduler_config)); Fullnode::new_bank_from_ledger(&my_ledger_path, &leader_scheduler_config);
// Set up the replay stage // Set up the replay stage
let (rotation_sender, rotation_receiver) = channel(); let (rotation_sender, rotation_receiver) = channel();
@ -520,7 +520,7 @@ mod test {
let (to_leader_sender, _) = channel(); let (to_leader_sender, _) = channel();
{ {
let (bank, entry_height, last_entry_id, db_ledger, l_sender, l_receiver) = let (bank, entry_height, last_entry_id, db_ledger, l_sender, l_receiver) =
Fullnode::new_bank_from_ledger(&my_ledger_path, None); Fullnode::new_bank_from_ledger(&my_ledger_path, &LeaderSchedulerConfig::default());
let bank = Arc::new(bank); let bank = Arc::new(bank);
let db_ledger = Arc::new(db_ledger); let db_ledger = Arc::new(db_ledger);
@ -629,7 +629,7 @@ mod test {
let exit = Arc::new(AtomicBool::new(false)); let exit = Arc::new(AtomicBool::new(false));
{ {
let (bank, _entry_height, last_entry_id, db_ledger, l_sender, l_receiver) = let (bank, _entry_height, last_entry_id, db_ledger, l_sender, l_receiver) =
Fullnode::new_bank_from_ledger(&my_ledger_path, Some(&leader_scheduler_config)); Fullnode::new_bank_from_ledger(&my_ledger_path, &leader_scheduler_config);
let meta = db_ledger let meta = db_ledger
.meta() .meta()

View File

@ -1018,7 +1018,8 @@ fn test_leader_to_validator_transition() {
leader_exit(); leader_exit();
info!("Check the ledger to make sure it's the right height..."); info!("Check the ledger to make sure it's the right height...");
let bank = Fullnode::new_bank_from_ledger(&leader_ledger_path, None).0; let bank =
Fullnode::new_bank_from_ledger(&leader_ledger_path, &LeaderSchedulerConfig::default()).0;
assert_eq!( assert_eq!(
bank.tick_height(), bank.tick_height(),