From 4e79d78629eb65a289f107d0ba0ecac7460a8c1c Mon Sep 17 00:00:00 2001 From: Michael Vines Date: Wed, 10 Aug 2022 08:46:06 -0700 Subject: [PATCH] `solana-validator monitor` how displays slot and gossip stake % while waiting for supermajority --- core/src/validator.rs | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/core/src/validator.rs b/core/src/validator.rs index 5bb164ed2fe764..119c7d8a4f9b70 100644 --- a/core/src/validator.rs +++ b/core/src/validator.rs @@ -259,14 +259,23 @@ impl ValidatorConfig { pub enum ValidatorStartProgress { Initializing, // Catch all, default state SearchingForRpcService, - DownloadingSnapshot { slot: Slot, rpc_addr: SocketAddr }, + DownloadingSnapshot { + slot: Slot, + rpc_addr: SocketAddr, + }, CleaningBlockStore, CleaningAccounts, LoadingLedger, - ProcessingLedger { slot: Slot, max_slot: Slot }, + ProcessingLedger { + slot: Slot, + max_slot: Slot, + }, StartingServices, Halted, // Validator halted due to `--dev-halt-at-slot` argument - WaitingForSupermajority, + WaitingForSupermajority { + slot: Slot, + gossip_stake_percent: u64, + }, // `Running` is the terminal state once the validator fully starts and all services are // operational @@ -1890,20 +1899,20 @@ fn wait_for_supermajority( ) -> Result { match config.wait_for_supermajority { None => Ok(false), - Some(wait_for_supermajority) => { + Some(wait_for_supermajority_slot) => { if let Some(process_blockstore) = process_blockstore { process_blockstore.process(); } let bank = bank_forks.read().unwrap().working_bank(); - match wait_for_supermajority.cmp(&bank.slot()) { + match wait_for_supermajority_slot.cmp(&bank.slot()) { std::cmp::Ordering::Less => return Ok(false), std::cmp::Ordering::Greater => { error!( "Ledger does not have enough data to wait for supermajority, \ please enable snapshot fetch. Has {} needs {}", bank.slot(), - wait_for_supermajority + wait_for_supermajority_slot ); return Err(ValidatorError::NotEnoughLedgerData); } @@ -1921,7 +1930,6 @@ fn wait_for_supermajority( } } - *start_progress.write().unwrap() = ValidatorStartProgress::WaitingForSupermajority; for i in 1.. { if i % 10 == 1 { info!( @@ -1934,6 +1942,12 @@ fn wait_for_supermajority( let gossip_stake_percent = get_stake_percent_in_gossip(&bank, cluster_info, i % 10 == 0); + *start_progress.write().unwrap() = + ValidatorStartProgress::WaitingForSupermajority { + slot: wait_for_supermajority_slot, + gossip_stake_percent, + }; + if gossip_stake_percent >= WAIT_FOR_SUPERMAJORITY_THRESHOLD_PERCENT { info!( "Supermajority reached, {}% active stake detected, starting up now.",