diff --git a/core/src/replay_stage.rs b/core/src/replay_stage.rs index bc4bf48d8f..4f605ac2d1 100644 --- a/core/src/replay_stage.rs +++ b/core/src/replay_stage.rs @@ -308,12 +308,19 @@ impl ReplayStage { T: 'static + KeypairUtil + Send + Sync, { if let Some(new_root) = locktower.record_vote(bank.slot()) { - let mut rooted_slots = bank + // get the root bank before squash + let root_bank = bank_forks + .read() + .unwrap() + .get(new_root) + .expect("Root bank doesn't exist") + .clone(); + let mut rooted_slots = root_bank .parents() .into_iter() .map(|bank| bank.slot()) .collect::>(); - rooted_slots.push(bank.slot()); + rooted_slots.push(root_bank.slot()); bank_forks.write().unwrap().set_root(new_root); leader_schedule_cache.set_root(new_root); blocktree.set_root(new_root)?;