From fb69f45f14ced70bd39ec2eb66952ad2fec6fc47 Mon Sep 17 00:00:00 2001 From: behzad nouri Date: Thu, 29 Jul 2021 17:42:22 -0400 Subject: [PATCH] adds fallback & metric for when epoch staked-nodes are none --- core/src/cluster_nodes.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/core/src/cluster_nodes.rs b/core/src/cluster_nodes.rs index 6589393fc1..d7bd52b88a 100644 --- a/core/src/cluster_nodes.rs +++ b/core/src/cluster_nodes.rs @@ -257,9 +257,18 @@ impl ClusterNodesCache { cache.pop(&epoch); } } - let epoch_staked_nodes = root_bank.epoch_staked_nodes(epoch).unwrap_or_default(); - let nodes = new_cluster_nodes::(cluster_info, &epoch_staked_nodes); - let nodes = Arc::new(nodes); + let epoch_staked_nodes = root_bank.epoch_staked_nodes(epoch); + if epoch_staked_nodes.is_none() { + inc_new_counter_info!("cluster_nodes-unknown_epoch_staked_nodes", 1); + if epoch != root_bank.get_leader_schedule_epoch(root_bank.slot()) { + return self.get(root_bank.slot(), root_bank, cluster_info); + } + inc_new_counter_info!("cluster_nodes-unknown_epoch_staked_nodes_root", 1); + } + let nodes = Arc::new(new_cluster_nodes::( + cluster_info, + &epoch_staked_nodes.unwrap_or_default(), + )); { let mut cache = self.cache.lock().unwrap(); cache.put(epoch, (Instant::now(), Arc::clone(&nodes)));