From 79ee0e06b2a26bdcad1cb55d9bf9252a8a04127c Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 6 Apr 2021 01:37:16 +0000 Subject: [PATCH] Cluster info shred spies (bp #16389) (#16395) * cluster-info: Don't subtract non-shred spies from node count (cherry picked from commit b6b08706b9c53b163937199de10b15e944f357af) * cluster-info: Get rid of some integer math while we're here (cherry picked from commit b71875df61dd56541b78742e51772a80b9d1f903) Co-authored-by: Trent Nelson --- core/src/cluster_info.rs | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/core/src/cluster_info.rs b/core/src/cluster_info.rs index 1f0da36b3b..e233980c93 100644 --- a/core/src/cluster_info.rs +++ b/core/src/cluster_info.rs @@ -907,23 +907,28 @@ impl ClusterInfo { pub fn contact_info_trace(&self) -> String { let now = timestamp(); - let mut spy_nodes = 0; - let mut different_shred_nodes = 0; + let mut shred_spy_nodes = 0usize; + let mut total_spy_nodes = 0usize; + let mut different_shred_nodes = 0usize; let my_pubkey = self.id(); let my_shred_version = self.my_shred_version(); let nodes: Vec<_> = self .all_peers() .into_iter() .filter_map(|(node, last_updated)| { - if Self::is_spy_node(&node) { - spy_nodes += 1; + let is_spy_node = Self::is_spy_node(&node); + if is_spy_node { + total_spy_nodes = total_spy_nodes.saturating_add(1); } let node_version = self.get_node_version(&node.id); if my_shred_version != 0 && (node.shred_version != 0 && node.shred_version != my_shred_version) { - different_shred_nodes += 1; + different_shred_nodes = different_shred_nodes.saturating_add(1); None } else { + if is_spy_node { + shred_spy_nodes = shred_spy_nodes.saturating_add(1); + } fn addr_to_string(default_ip: &IpAddr, addr: &SocketAddr) -> String { if ContactInfo::is_valid_address(addr) { if &addr.ip() == default_ip { @@ -972,9 +977,9 @@ impl ClusterInfo { {}\ Nodes: {}{}{}", nodes.join(""), - nodes.len() - spy_nodes, - if spy_nodes > 0 { - format!("\nSpies: {}", spy_nodes) + nodes.len().saturating_sub(shred_spy_nodes), + if total_spy_nodes > 0 { + format!("\nSpies: {}", total_spy_nodes) } else { "".to_string() },