Avoid panic when validator doesn't have performance samples (#15976) (#15980)

(cherry picked from commit ba33c9e18e)

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
This commit is contained in:
mergify[bot]
2021-03-18 09:22:02 +00:00
committed by GitHub
parent ea1312ab0b
commit de8df24203

View File

@ -996,11 +996,12 @@ pub fn process_get_epoch_info(rpc_client: &RpcClient, config: &CliConfig) -> Pro
let epoch_info = rpc_client.get_epoch_info()?; let epoch_info = rpc_client.get_epoch_info()?;
let average_slot_time_ms = rpc_client let average_slot_time_ms = rpc_client
.get_recent_performance_samples(Some(60)) .get_recent_performance_samples(Some(60))
.map(|samples| { .ok()
.and_then(|samples| {
let (slots, secs) = samples.iter().fold((0, 0), |(slots, secs), sample| { let (slots, secs) = samples.iter().fold((0, 0), |(slots, secs), sample| {
(slots + sample.num_slots, secs + sample.sample_period_secs) (slots + sample.num_slots, secs + sample.sample_period_secs)
}); });
(secs as u64 * 1000) / slots (secs as u64).saturating_mul(1000).checked_div(slots)
}) })
.unwrap_or(clock::DEFAULT_MS_PER_SLOT); .unwrap_or(clock::DEFAULT_MS_PER_SLOT);
let epoch_info = CliEpochInfo { let epoch_info = CliEpochInfo {