From d4eebcc2aaf614779e19de78afb7a3904df75919 Mon Sep 17 00:00:00 2001 From: carllin Date: Tue, 9 Apr 2019 11:45:38 -0700 Subject: [PATCH] Check for frozen in confirm_forks (#3678) --- core/src/replay_stage.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/core/src/replay_stage.rs b/core/src/replay_stage.rs index e2dc3ea3ea..f27129d603 100644 --- a/core/src/replay_stage.rs +++ b/core/src/replay_stage.rs @@ -418,7 +418,7 @@ impl ReplayStage { .filter(|(b, stake_lockouts)| { let vote_threshold = locktower.check_vote_stake_threshold(b.slot(), &stake_lockouts); - Self::confirm_forks(locktower, stake_lockouts, progress); + Self::confirm_forks(locktower, stake_lockouts, progress, bank_forks); debug!("bank vote_threshold: {} {}", b.slot(), vote_threshold); vote_threshold }) @@ -448,10 +448,18 @@ impl ReplayStage { locktower: &Locktower, stake_lockouts: &HashMap, progress: &mut HashMap, + bank_forks: &Arc>, ) { progress.retain(|slot, prog| { let duration = timing::timestamp() - prog.started_ms; - if locktower.is_slot_confirmed(*slot, stake_lockouts) { + if locktower.is_slot_confirmed(*slot, stake_lockouts) + && bank_forks + .read() + .unwrap() + .get(*slot) + .map(|s| s.is_frozen()) + .unwrap_or(true) + { info!("validator fork confirmed {} {}", *slot, duration); solana_metrics::submit( influxdb::Point::new(&"validator-confirmation")