diff --git a/src/fullnode.rs b/src/fullnode.rs index e28ee79959..7259719d39 100644 --- a/src/fullnode.rs +++ b/src/fullnode.rs @@ -65,7 +65,6 @@ pub struct FullnodeConfig { pub entry_stream: Option, pub storage_rotate_count: u64, pub leader_scheduler_config: LeaderSchedulerConfig, - pub ledger_config: BlocktreeConfig, pub tick_config: PohServiceConfig, } impl Default for FullnodeConfig { @@ -80,16 +79,16 @@ impl Default for FullnodeConfig { entry_stream: None, storage_rotate_count: NUM_HASHES_FOR_STORAGE_ROTATE, leader_scheduler_config: LeaderSchedulerConfig::default(), - ledger_config: BlocktreeConfig::default(), tick_config: PohServiceConfig::default(), } } } impl FullnodeConfig { - pub fn set_leader_scheduler_config(&mut self, config: LeaderSchedulerConfig) { - self.ledger_config.ticks_per_slot = config.ticks_per_slot; - self.leader_scheduler_config = config; + pub fn ledger_config(&self) -> BlocktreeConfig { + // TODO: Refactor LeaderSchedulerConfig and BlocktreeConfig to avoid the duplicated + // `ticks_per_slot` field that must be identical between the two + BlocktreeConfig::new(self.leader_scheduler_config.ticks_per_slot) } } @@ -133,7 +132,7 @@ impl Fullnode { ledger_signal_receiver, ) = new_bank_from_ledger( ledger_path, - config.ledger_config, + config.ledger_config(), &config.leader_scheduler_config, ); @@ -645,7 +644,7 @@ mod tests { let voting_keypair = VotingKeypair::new_local(&bootstrap_leader_keypair); // Start the bootstrap leader let mut fullnode_config = FullnodeConfig::default(); - fullnode_config.set_leader_scheduler_config(leader_scheduler_config); + fullnode_config.leader_scheduler_config = leader_scheduler_config; let bootstrap_leader = Fullnode::new( bootstrap_leader_node, &bootstrap_leader_keypair, @@ -674,11 +673,11 @@ mod tests { let mut fullnode_config = FullnodeConfig::default(); let ticks_per_slot = 16; let slots_per_epoch = 2; - fullnode_config.set_leader_scheduler_config(LeaderSchedulerConfig::new( + fullnode_config.leader_scheduler_config = LeaderSchedulerConfig::new( ticks_per_slot, slots_per_epoch, ticks_per_slot * slots_per_epoch, - )); + ); // Create the leader and validator nodes let bootstrap_leader_keypair = Arc::new(Keypair::new()); @@ -768,11 +767,11 @@ mod tests { // Set the leader scheduler for the validator let mut fullnode_config = FullnodeConfig::default(); - fullnode_config.set_leader_scheduler_config(LeaderSchedulerConfig::new( + fullnode_config.leader_scheduler_config = LeaderSchedulerConfig::new( ticks_per_slot, slots_per_epoch, ticks_per_slot * slots_per_epoch, - )); + ); let voting_keypair = VotingKeypair::new_local(&validator_keypair); @@ -869,11 +868,11 @@ mod tests { // Set the leader scheduler for the validator let mut fullnode_config = FullnodeConfig::default(); - fullnode_config.set_leader_scheduler_config(LeaderSchedulerConfig::new( + fullnode_config.leader_scheduler_config = LeaderSchedulerConfig::new( ticks_per_slot, slots_per_epoch, ticks_per_slot * slots_per_epoch, - )); + ); let config = PohServiceConfig::Sleep(Duration::from_millis(200)); fullnode_config.tick_config = config; diff --git a/tests/multinode.rs b/tests/multinode.rs index 18a4ad9242..62b96f1dca 100644 --- a/tests/multinode.rs +++ b/tests/multinode.rs @@ -854,14 +854,14 @@ fn test_leader_to_validator_transition() { let mut fullnode_config = FullnodeConfig::default(); let ticks_per_slot = 5; - fullnode_config.set_leader_scheduler_config(LeaderSchedulerConfig::new( + fullnode_config.leader_scheduler_config = LeaderSchedulerConfig::new( ticks_per_slot, 1, // Setup window length to exclude the genesis bootstrap leader vote at tick height 0, so // that when the leader schedule is recomputed for epoch 1 only the validator vote at tick // height 1 will be considered. ticks_per_slot, - )); + ); // Initialize the leader ledger. Make a mint and a genesis entry // in the leader ledger @@ -1005,11 +1005,11 @@ fn test_leader_validator_basic() { // Create the leader scheduler config let mut fullnode_config = FullnodeConfig::default(); let ticks_per_slot = 5; - fullnode_config.set_leader_scheduler_config(LeaderSchedulerConfig::new( + fullnode_config.leader_scheduler_config = LeaderSchedulerConfig::new( ticks_per_slot, 1, // 1 slot per epoch ticks_per_slot, - )); + ); // Start the validator node let voting_keypair = VotingKeypair::new_local(&validator_keypair); @@ -1114,11 +1114,8 @@ fn test_dropped_handoff_recovery() { let ticks_per_slot = 5; let ticks_per_epoch = slots_per_epoch * ticks_per_slot; let mut fullnode_config = FullnodeConfig::default(); - fullnode_config.set_leader_scheduler_config(LeaderSchedulerConfig::new( - ticks_per_slot, - slots_per_epoch, - ticks_per_epoch, - )); + fullnode_config.leader_scheduler_config = + LeaderSchedulerConfig::new(ticks_per_slot, slots_per_epoch, ticks_per_epoch); // Make a common mint and a genesis entry for both leader + validator's ledgers let num_ending_ticks = 1; @@ -1333,11 +1330,8 @@ fn test_full_leader_validator_network() { let ticks_per_slot = 5; let ticks_per_epoch = slots_per_epoch * ticks_per_slot; let mut fullnode_config = FullnodeConfig::default(); - fullnode_config.set_leader_scheduler_config(LeaderSchedulerConfig::new( - ticks_per_slot, - slots_per_epoch, - ticks_per_epoch * 3, - )); + fullnode_config.leader_scheduler_config = + LeaderSchedulerConfig::new(ticks_per_slot, slots_per_epoch, ticks_per_epoch * 3); let mut nodes = vec![]; @@ -1536,11 +1530,8 @@ fn test_broadcast_last_tick() { let bootstrap_leader_keypair = Arc::new(bootstrap_leader_keypair); let voting_keypair = VotingKeypair::new_local(&bootstrap_leader_keypair); let mut fullnode_config = FullnodeConfig::default(); - fullnode_config.set_leader_scheduler_config(LeaderSchedulerConfig::new( - ticks_per_slot, - slots_per_epoch, - ticks_per_epoch, - )); + fullnode_config.leader_scheduler_config = + LeaderSchedulerConfig::new(ticks_per_slot, slots_per_epoch, ticks_per_epoch); let bootstrap_leader = Fullnode::new( bootstrap_leader_node, &bootstrap_leader_keypair,