Clear progress map on squash (#3377)

This commit is contained in:
carllin 2019-03-19 17:30:36 -07:00 committed by GitHub
parent 94b5835738
commit fe9e771b9b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 0 deletions

View File

@ -68,6 +68,7 @@ impl BankForks {
.map(|(k, _v)| *k)
.collect()
}
pub fn get(&self, bank_slot: u64) -> Option<&Arc<Bank>> {
self.banks.get(&bank_slot)
}

View File

@ -199,6 +199,7 @@ impl ReplayStage {
);
if let Some(new_root) = locktower.record_vote(bank.slot()) {
bank_forks.write().unwrap().set_root(new_root);
Self::handle_new_root(&bank_forks, &mut progress);
}
locktower.update_epoch(&bank);
cluster_info.write().unwrap().push_vote(vote);
@ -406,6 +407,14 @@ impl ReplayStage {
Ok(())
}
fn handle_new_root(
bank_forks: &Arc<RwLock<BankForks>>,
progress: &mut HashMap<u64, (Hash, usize)>,
) {
let r_bank_forks = bank_forks.read().unwrap();
progress.retain(|k, _| r_bank_forks.get(*k).is_some());
}
fn process_completed_bank(
my_id: &Pubkey,
bank: Arc<Bank>,
@ -636,4 +645,14 @@ mod test {
let _ignored = remove_dir_all(&ledger_path);
}
#[test]
fn test_handle_new_root() {
let bank0 = Bank::default();
let bank_forks = Arc::new(RwLock::new(BankForks::new(0, bank0)));
let mut progress = HashMap::new();
progress.insert(5, (Hash::default(), 0));
ReplayStage::handle_new_root(&bank_forks, &mut progress);
assert!(progress.is_empty());
}
}