Use slot height for BankForks ids

This commit is contained in:
Greg Fitzgerald
2019-02-18 15:35:02 -07:00
parent 11b14bd3ab
commit e0b8f4202d
2 changed files with 8 additions and 9 deletions

View File

@ -10,9 +10,8 @@ pub struct BankForks {
} }
impl BankForks { impl BankForks {
pub fn new(bank: Bank) -> Self { pub fn new(working_bank_id: u64, bank: Bank) -> Self {
let mut banks = HashMap::new(); let mut banks = HashMap::new();
let working_bank_id = bank.tick_height();
banks.insert(working_bank_id, Arc::new(bank)); banks.insert(working_bank_id, Arc::new(bank));
Self { Self {
working_bank_id, working_bank_id,
@ -32,10 +31,8 @@ impl BankForks {
bank bank
} }
pub fn insert(&mut self, bank: Bank) -> u64 { pub fn insert(&mut self, bank_id: u64, bank: Bank) {
let bank_id = bank.tick_height();
self.banks.insert(bank_id, Arc::new(bank)); self.banks.insert(bank_id, Arc::new(bank));
bank_id
} }
pub fn set_working_bank_id(&mut self, bank_id: u64) { pub fn set_working_bank_id(&mut self, bank_id: u64) {
@ -54,7 +51,7 @@ mod tests {
fn test_bank_forks_root() { fn test_bank_forks_root() {
let bank = Bank::default(); let bank = Bank::default();
let tick_height = bank.tick_height(); let tick_height = bank.tick_height();
let bank_forks = BankForks::new(bank); let bank_forks = BankForks::new(0, bank);
assert_eq!(bank_forks.working_bank().tick_height(), tick_height); assert_eq!(bank_forks.working_bank().tick_height(), tick_height);
assert_eq!(bank_forks.finalized_bank().tick_height(), tick_height); assert_eq!(bank_forks.finalized_bank().tick_height(), tick_height);
} }
@ -63,10 +60,11 @@ mod tests {
fn test_bank_forks_parent() { fn test_bank_forks_parent() {
let bank = Bank::default(); let bank = Bank::default();
let finalized_bank_id = bank.tick_height(); let finalized_bank_id = bank.tick_height();
let mut bank_forks = BankForks::new(bank); let mut bank_forks = BankForks::new(0, bank);
let child_bank = Bank::new_from_parent(&bank_forks.working_bank()); let child_bank = Bank::new_from_parent(&bank_forks.working_bank());
child_bank.register_tick(&Hash::default()); child_bank.register_tick(&Hash::default());
let child_bank_id = bank_forks.insert(child_bank); let child_bank_id = 1;
bank_forks.insert(child_bank_id, child_bank);
bank_forks.set_working_bank_id(child_bank_id); bank_forks.set_working_bank_id(child_bank_id);
assert_eq!(bank_forks.working_bank().tick_height(), child_bank_id); assert_eq!(bank_forks.working_bank().tick_height(), child_bank_id);
assert_eq!(bank_forks.finalized_bank().tick_height(), finalized_bank_id); assert_eq!(bank_forks.finalized_bank().tick_height(), finalized_bank_id);

View File

@ -457,7 +457,8 @@ fn new_banks_from_blocktree(
let genesis_block = let genesis_block =
GenesisBlock::load(blocktree_path).expect("Expected to successfully open genesis block"); GenesisBlock::load(blocktree_path).expect("Expected to successfully open genesis block");
let bank = Bank::new(&genesis_block); let bank = Bank::new(&genesis_block);
let bank_forks = BankForks::new(bank); let slot_height = 0; // Use the Bank's slot_height as its ID.
let bank_forks = BankForks::new(slot_height, bank);
leader_scheduler leader_scheduler
.write() .write()
.unwrap() .unwrap()