Try harder to keep LeaderSchedulerConfig and BlocktreeConfig in sync
This commit is contained in:
parent
095afdfe47
commit
aac1a58651
|
@ -65,7 +65,6 @@ pub struct FullnodeConfig {
|
|||
pub entry_stream: Option<String>,
|
||||
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;
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue