From fbbfa93524946f77221943763b6d37f1013bce51 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sun, 19 Jan 2020 18:51:13 -0800 Subject: [PATCH] Spy just for RPC to avoid premature supermajority (#7856) (#7875) automerge --- core/src/cluster_info.rs | 60 +++++++++++++++++++--------------------- validator/src/main.rs | 5 +++- 2 files changed, 33 insertions(+), 32 deletions(-) diff --git a/core/src/cluster_info.rs b/core/src/cluster_info.rs index a83b71713f..825895380b 100644 --- a/core/src/cluster_info.rs +++ b/core/src/cluster_info.rs @@ -1616,6 +1616,30 @@ impl ClusterInfo { .unwrap() } + fn gossip_contact_info(id: &Pubkey, gossip_addr: SocketAddr) -> ContactInfo { + let dummy_addr = socketaddr_any!(); + + ContactInfo::new( + id, + gossip_addr, + dummy_addr, + dummy_addr, + dummy_addr, + dummy_addr, + dummy_addr, + dummy_addr, + dummy_addr, + dummy_addr, + timestamp(), + ) + } + + pub fn spy_contact_info(id: &Pubkey) -> ContactInfo { + let dummy_addr = socketaddr_any!(); + + Self::gossip_contact_info(id, dummy_addr) + } + /// An alternative to Spy Node that has a valid gossip address and fully participate in Gossip. pub fn gossip_node( id: &Pubkey, @@ -1623,43 +1647,17 @@ impl ClusterInfo { ) -> (ContactInfo, UdpSocket, Option) { let (port, (gossip_socket, ip_echo)) = Node::get_gossip_port(gossip_addr, VALIDATOR_PORT_RANGE); - let daddr = socketaddr_any!(); + let contact_info = Self::gossip_contact_info(id, SocketAddr::new(gossip_addr.ip(), port)); - let node = ContactInfo::new( - id, - SocketAddr::new(gossip_addr.ip(), port), - daddr, - daddr, - daddr, - daddr, - daddr, - daddr, - daddr, - daddr, - timestamp(), - ); - (node, gossip_socket, Some(ip_echo)) + (contact_info, gossip_socket, Some(ip_echo)) } - /// A Node with invalid ports to spy on gossip via pull requests + /// A Node with dummy ports to spy on gossip via pull requests pub fn spy_node(id: &Pubkey) -> (ContactInfo, UdpSocket, Option) { let (_, gossip_socket) = bind_in_range(VALIDATOR_PORT_RANGE).unwrap(); - let daddr = socketaddr_any!(); + let contact_info = Self::spy_contact_info(id); - let node = ContactInfo::new( - id, - daddr, - daddr, - daddr, - daddr, - daddr, - daddr, - daddr, - daddr, - daddr, - timestamp(), - ); - (node, gossip_socket, None) + (contact_info, gossip_socket, None) } } diff --git a/validator/src/main.rs b/validator/src/main.rs index 3e939a1106..630605b1bb 100644 --- a/validator/src/main.rs +++ b/validator/src/main.rs @@ -198,7 +198,10 @@ fn get_rpc_addr( identity_keypair: &Arc, entrypoint_gossip: &SocketAddr, ) -> (RpcClient, SocketAddr) { - let mut cluster_info = ClusterInfo::new(node.info.clone(), identity_keypair.clone()); + let mut cluster_info = ClusterInfo::new( + ClusterInfo::spy_contact_info(&identity_keypair.pubkey()), + identity_keypair.clone(), + ); cluster_info.set_entrypoint(ContactInfo::new_gossip_entry_point(entrypoint_gossip)); let cluster_info = Arc::new(RwLock::new(cluster_info));