* Fix skipping half leader slot * Get rid of unnecessary frozen banks
This commit is contained in:
@ -238,6 +238,7 @@ impl PohRecorder {
|
||||
working_bank.bank.slot()
|
||||
);
|
||||
self.start_slot = working_bank.max_tick_height / working_bank.bank.ticks_per_slot();
|
||||
self.start_tick = (self.start_slot + 1) * working_bank.bank.ticks_per_slot();
|
||||
self.clear_bank();
|
||||
}
|
||||
if e.is_err() {
|
||||
|
@ -237,12 +237,16 @@ impl ReplayStage {
|
||||
) {
|
||||
trace!("{} checking poh slot {}", my_id, poh_slot);
|
||||
if bank_forks.read().unwrap().get(poh_slot).is_none() {
|
||||
let frozen = bank_forks.read().unwrap().frozen_banks();
|
||||
let parent_slot = poh_recorder.lock().unwrap().start_slot();
|
||||
assert!(frozen.contains_key(&parent_slot));
|
||||
let parent = &frozen[&parent_slot];
|
||||
let parent = {
|
||||
let r_bf = bank_forks.read().unwrap();
|
||||
r_bf.get(parent_slot)
|
||||
.expect("start slot doesn't exist in bank forks")
|
||||
.clone()
|
||||
};
|
||||
assert!(parent.is_frozen());
|
||||
|
||||
leader_schedule_utils::slot_leader_at(poh_slot, parent)
|
||||
leader_schedule_utils::slot_leader_at(poh_slot, &parent)
|
||||
.map(|next_leader| {
|
||||
debug!(
|
||||
"me: {} leader {} at poh slot {}",
|
||||
@ -262,7 +266,7 @@ impl ReplayStage {
|
||||
influxdb::Value::Integer(grace_ticks as i64),
|
||||
)
|
||||
.to_owned(),);
|
||||
let tpu_bank = Bank::new_from_parent(parent, my_id, poh_slot);
|
||||
let tpu_bank = Bank::new_from_parent(&parent, my_id, poh_slot);
|
||||
bank_forks.write().unwrap().insert(tpu_bank);
|
||||
if let Some(tpu_bank) = bank_forks.read().unwrap().get(poh_slot).cloned() {
|
||||
assert_eq!(
|
||||
|
Reference in New Issue
Block a user