core: fix double-readlock in replay_stage (#26052)
This commit is contained in:
parent
b39767193b
commit
83a0f5da0f
|
@ -2898,7 +2898,7 @@ impl ReplayStage {
|
||||||
newly_voted_pubkeys,
|
newly_voted_pubkeys,
|
||||||
cluster_slot_pubkeys,
|
cluster_slot_pubkeys,
|
||||||
slot,
|
slot,
|
||||||
bank_forks,
|
&bank_forks.read().unwrap(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3089,11 +3089,11 @@ impl ReplayStage {
|
||||||
mut newly_voted_pubkeys: Vec<Pubkey>,
|
mut newly_voted_pubkeys: Vec<Pubkey>,
|
||||||
mut cluster_slot_pubkeys: Vec<Pubkey>,
|
mut cluster_slot_pubkeys: Vec<Pubkey>,
|
||||||
fork_tip: Slot,
|
fork_tip: Slot,
|
||||||
bank_forks: &RwLock<BankForks>,
|
bank_forks: &BankForks,
|
||||||
) {
|
) {
|
||||||
let mut current_leader_slot = progress.get_latest_leader_slot_must_exist(fork_tip);
|
let mut current_leader_slot = progress.get_latest_leader_slot_must_exist(fork_tip);
|
||||||
let mut did_newly_reach_threshold = false;
|
let mut did_newly_reach_threshold = false;
|
||||||
let root = bank_forks.read().unwrap().root();
|
let root = bank_forks.root();
|
||||||
loop {
|
loop {
|
||||||
// These cases mean confirmation of propagation on any earlier
|
// These cases mean confirmation of propagation on any earlier
|
||||||
// leader blocks must have been reached
|
// leader blocks must have been reached
|
||||||
|
@ -3124,8 +3124,6 @@ impl ReplayStage {
|
||||||
// `progress` map
|
// `progress` map
|
||||||
assert!(leader_propagated_stats.is_leader_slot);
|
assert!(leader_propagated_stats.is_leader_slot);
|
||||||
let leader_bank = bank_forks
|
let leader_bank = bank_forks
|
||||||
.read()
|
|
||||||
.unwrap()
|
|
||||||
.get(current_leader_slot.unwrap())
|
.get(current_leader_slot.unwrap())
|
||||||
.expect("Entry in progress map must exist in BankForks")
|
.expect("Entry in progress map must exist in BankForks")
|
||||||
.clone();
|
.clone();
|
||||||
|
@ -3414,7 +3412,7 @@ impl ReplayStage {
|
||||||
empty,
|
empty,
|
||||||
vec![leader],
|
vec![leader],
|
||||||
parent_bank.slot(),
|
parent_bank.slot(),
|
||||||
bank_forks,
|
&forks,
|
||||||
);
|
);
|
||||||
new_banks.insert(child_slot, child_bank);
|
new_banks.insert(child_slot, child_bank);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue