Check for entry height in the unchanging bank_forks_info instead of a racy check to blocktree
This commit is contained in:
parent
ed684c5ec6
commit
1e15e6375a
|
@ -191,14 +191,18 @@ impl ReplayStage {
|
||||||
let to_leader_sender = to_leader_sender.clone();
|
let to_leader_sender = to_leader_sender.clone();
|
||||||
let subscriptions_ = subscriptions.clone();
|
let subscriptions_ = subscriptions.clone();
|
||||||
|
|
||||||
let (bank, last_entry_id) = {
|
let (bank, last_entry_id, mut current_blob_index) = {
|
||||||
let mut bank_forks = bank_forks.write().unwrap();
|
let mut bank_forks = bank_forks.write().unwrap();
|
||||||
bank_forks.set_working_bank_id(bank_forks_info[0].bank_id);
|
bank_forks.set_working_bank_id(bank_forks_info[0].bank_id);
|
||||||
(bank_forks.working_bank(), bank_forks_info[0].last_entry_id)
|
(
|
||||||
|
bank_forks.working_bank(),
|
||||||
|
bank_forks_info[0].last_entry_id,
|
||||||
|
bank_forks_info[0].entry_height,
|
||||||
|
)
|
||||||
};
|
};
|
||||||
let last_entry_id = Arc::new(RwLock::new(last_entry_id));
|
let last_entry_id = Arc::new(RwLock::new(last_entry_id));
|
||||||
|
|
||||||
let mut current_blob_index = {
|
{
|
||||||
let leader_scheduler = leader_scheduler.read().unwrap();
|
let leader_scheduler = leader_scheduler.read().unwrap();
|
||||||
let slot = leader_scheduler.tick_height_to_slot(bank.tick_height() + 1);
|
let slot = leader_scheduler.tick_height_to_slot(bank.tick_height() + 1);
|
||||||
|
|
||||||
|
@ -217,13 +221,7 @@ impl ReplayStage {
|
||||||
leader_id,
|
leader_id,
|
||||||
})
|
})
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
}
|
||||||
blocktree
|
|
||||||
.meta(slot)
|
|
||||||
.expect("Database error")
|
|
||||||
.map(|meta| meta.consumed)
|
|
||||||
.unwrap_or(0)
|
|
||||||
};
|
|
||||||
|
|
||||||
let t_replay = Builder::new()
|
let t_replay = Builder::new()
|
||||||
.name("solana-replay-stage".to_string())
|
.name("solana-replay-stage".to_string())
|
||||||
|
|
Loading…
Reference in New Issue