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()),
status_cache: RwLock::new(BankStatusCache::default()),
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()))),
}
}
@ -139,21 +139,20 @@ impl Default for Bank {
impl Bank {
pub fn new_with_leader_scheduler_config(
genesis_block: &GenesisBlock,
leader_scheduler_config_option: Option<&LeaderSchedulerConfig>,
leader_scheduler_config: &LeaderSchedulerConfig,
) -> Self {
let mut bank = Self::default();
if let Some(leader_scheduler_config) = leader_scheduler_config_option {
bank.leader_scheduler =
Arc::new(RwLock::new(LeaderScheduler::new(leader_scheduler_config)));
}
bank.leader_scheduler =
Arc::new(RwLock::new(LeaderScheduler::new(leader_scheduler_config)));
bank.process_genesis_block(genesis_block);
bank.add_builtin_programs();
bank
}
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>>) {
let mut sub = self.subscriptions.write().unwrap();
*sub = subscriptions

View File

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

View File

@ -523,8 +523,7 @@ pub mod tests {
let num_vote_account_tokens = 1;
let (genesis_block, mint_keypair) = GenesisBlock::new(10_000);
info!("bootstrap_leader_id: {}", genesis_block.bootstrap_leader_id);
let bank =
Bank::new_with_leader_scheduler_config(&genesis_block, Some(&leader_scheduler_config));
let bank = Bank::new_with_leader_scheduler_config(&genesis_block, &leader_scheduler_config);
let mut validators = vec![];
let last_id = genesis_block.last_id();
for i in 0..num_validators {
@ -652,8 +651,7 @@ pub mod tests {
let active_window_length = 1000;
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 bank =
Bank::new_with_leader_scheduler_config(&genesis_block, Some(&leader_scheduler_config));
let bank = Bank::new_with_leader_scheduler_config(&genesis_block, &leader_scheduler_config);
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_vote_account_tokens * num_validators)) as u64,
);
let bank =
Bank::new_with_leader_scheduler_config(&genesis_block, Some(&leader_scheduler_config));
let bank = Bank::new_with_leader_scheduler_config(&genesis_block, &leader_scheduler_config);
let mut validators = vec![];
let last_id = genesis_block.last_id();
for i in 0..num_validators {
@ -1042,8 +1039,7 @@ pub mod tests {
let active_window_length = 1000;
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 bank =
Bank::new_with_leader_scheduler_config(&genesis_block, Some(&leader_scheduler_config));
let bank = Bank::new_with_leader_scheduler_config(&genesis_block, &leader_scheduler_config);
// 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
// update_tick_height() function at the correct entry heights.
let (genesis_block, _) = GenesisBlock::new(10_000);
let bank =
Bank::new_with_leader_scheduler_config(&genesis_block, Some(&leader_scheduler_config));
let bank = Bank::new_with_leader_scheduler_config(&genesis_block, &leader_scheduler_config);
let mut leader_scheduler = bank.leader_scheduler.write().unwrap();
info!(
"bootstrap_leader_id: {:?}",
@ -1268,8 +1263,7 @@ pub mod tests {
// Create mint and bank
let (genesis_block, mint_keypair) =
GenesisBlock::new_with_leader(10_000, bootstrap_leader_id, BOOTSTRAP_LEADER_TOKENS);
let bank =
Bank::new_with_leader_scheduler_config(&genesis_block, Some(&leader_scheduler_config));
let bank = Bank::new_with_leader_scheduler_config(&genesis_block, &leader_scheduler_config);
let last_id = genesis_block.last_id();
let initial_vote_height = 1;

View File

@ -416,7 +416,7 @@ mod test {
{
// Set up the bank
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
let (rotation_sender, rotation_receiver) = channel();
@ -520,7 +520,7 @@ mod test {
let (to_leader_sender, _) = channel();
{
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 db_ledger = Arc::new(db_ledger);
@ -629,7 +629,7 @@ mod test {
let exit = Arc::new(AtomicBool::new(false));
{
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
.meta()

View File

@ -1018,7 +1018,8 @@ fn test_leader_to_validator_transition() {
leader_exit();
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!(
bank.tick_height(),