bank::new_with_leader_scheduler_config() - remove Option<>
This commit is contained in:
13
src/bank.rs
13
src/bank.rs
@ -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
|
||||||
|
@ -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()
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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()
|
||||||
|
@ -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(),
|
||||||
|
Reference in New Issue
Block a user