From ecb055a2522d294b310db0526d30d1d45d0f38e4 Mon Sep 17 00:00:00 2001 From: Michael Vines Date: Wed, 12 Feb 2020 13:58:51 -0700 Subject: [PATCH] Expel ContactInfo::new() (#8245) automerge --- core/src/cluster_info.rs | 111 ++++++++++++++---------------- core/src/contact_info.rs | 142 ++++++++++++++------------------------- core/src/serve_repair.rs | 87 ++++++++++++------------ 3 files changed, 149 insertions(+), 191 deletions(-) diff --git a/core/src/cluster_info.rs b/core/src/cluster_info.rs index a26c9bc8e..c40339d66 100644 --- a/core/src/cluster_info.rs +++ b/core/src/cluster_info.rs @@ -1420,23 +1420,13 @@ 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, - dummy_addr, - timestamp(), - ) + fn gossip_contact_info(id: &Pubkey, gossip: SocketAddr) -> ContactInfo { + ContactInfo { + id: *id, + gossip, + wallclock: timestamp(), + ..ContactInfo::default() + } } pub fn spy_contact_info(id: &Pubkey) -> ContactInfo { @@ -1540,20 +1530,21 @@ impl Node { let retransmit = UdpSocket::bind("0.0.0.0:0").unwrap(); let serve_repair = UdpSocket::bind("127.0.0.1:0").unwrap(); - let info = ContactInfo::new( - pubkey, - gossip.local_addr().unwrap(), - tvu.local_addr().unwrap(), - tvu_forwards.local_addr().unwrap(), - repair.local_addr().unwrap(), - empty, - empty, - storage.local_addr().unwrap(), - empty, - empty, - serve_repair.local_addr().unwrap(), - timestamp(), - ); + let info = ContactInfo { + id: *pubkey, + gossip: gossip.local_addr().unwrap(), + tvu: tvu.local_addr().unwrap(), + tvu_forwards: tvu_forwards.local_addr().unwrap(), + repair: repair.local_addr().unwrap(), + tpu: empty, + tpu_forwards: empty, + storage_addr: storage.local_addr().unwrap(), + rpc: empty, + rpc_pubsub: empty, + serve_repair: serve_repair.local_addr().unwrap(), + wallclock: timestamp(), + shred_version: 0, + }; Node { info, @@ -1590,20 +1581,21 @@ impl Node { let retransmit_socket = UdpSocket::bind("0.0.0.0:0").unwrap(); let storage = UdpSocket::bind("0.0.0.0:0").unwrap(); let serve_repair = UdpSocket::bind("127.0.0.1:0").unwrap(); - let info = ContactInfo::new( - pubkey, - gossip_addr, - tvu.local_addr().unwrap(), - tvu_forwards.local_addr().unwrap(), - repair.local_addr().unwrap(), - tpu.local_addr().unwrap(), - tpu_forwards.local_addr().unwrap(), - storage.local_addr().unwrap(), - rpc_addr, - rpc_pubsub_addr, - serve_repair.local_addr().unwrap(), - timestamp(), - ); + let info = ContactInfo { + id: *pubkey, + gossip: gossip_addr, + tvu: tvu.local_addr().unwrap(), + tvu_forwards: tvu_forwards.local_addr().unwrap(), + repair: repair.local_addr().unwrap(), + tpu: tpu.local_addr().unwrap(), + tpu_forwards: tpu_forwards.local_addr().unwrap(), + storage_addr: storage.local_addr().unwrap(), + rpc: rpc_addr, + rpc_pubsub: rpc_pubsub_addr, + serve_repair: serve_repair.local_addr().unwrap(), + wallclock: timestamp(), + shred_version: 0, + }; Node { info, sockets: Sockets { @@ -1664,20 +1656,21 @@ impl Node { let (_, broadcast) = multi_bind_in_range(port_range, 4).expect("broadcast multi_bind"); - let info = ContactInfo::new( - pubkey, - SocketAddr::new(gossip_addr.ip(), gossip_port), - SocketAddr::new(gossip_addr.ip(), tvu_port), - SocketAddr::new(gossip_addr.ip(), tvu_forwards_port), - SocketAddr::new(gossip_addr.ip(), repair_port), - SocketAddr::new(gossip_addr.ip(), tpu_port), - SocketAddr::new(gossip_addr.ip(), tpu_forwards_port), - socketaddr_any!(), - socketaddr_any!(), - socketaddr_any!(), - SocketAddr::new(gossip_addr.ip(), serve_repair_port), - 0, - ); + let info = ContactInfo { + id: *pubkey, + gossip: SocketAddr::new(gossip_addr.ip(), gossip_port), + tvu: SocketAddr::new(gossip_addr.ip(), tvu_port), + tvu_forwards: SocketAddr::new(gossip_addr.ip(), tvu_forwards_port), + repair: SocketAddr::new(gossip_addr.ip(), repair_port), + tpu: SocketAddr::new(gossip_addr.ip(), tpu_port), + tpu_forwards: SocketAddr::new(gossip_addr.ip(), tpu_forwards_port), + storage_addr: socketaddr_any!(), + rpc: socketaddr_any!(), + rpc_pubsub: socketaddr_any!(), + serve_repair: SocketAddr::new(gossip_addr.ip(), serve_repair_port), + wallclock: 0, + shred_version: 0, + }; trace!("new ContactInfo: {:?}", info); Node { diff --git a/core/src/contact_info.rs b/core/src/contact_info.rs index cf0f437b5..8659965d6 100644 --- a/core/src/contact_info.rs +++ b/core/src/contact_info.rs @@ -95,74 +95,44 @@ impl Default for ContactInfo { } impl ContactInfo { - #[allow(clippy::too_many_arguments)] - pub fn new( - id: &Pubkey, - gossip: SocketAddr, - tvu: SocketAddr, - tvu_forwards: SocketAddr, - repair: SocketAddr, - tpu: SocketAddr, - tpu_forwards: SocketAddr, - storage_addr: SocketAddr, - rpc: SocketAddr, - rpc_pubsub: SocketAddr, - serve_repair: SocketAddr, - now: u64, - ) -> Self { + pub fn new_localhost(id: &Pubkey, now: u64) -> Self { Self { id: *id, - gossip, - tvu, - tvu_forwards, - repair, - tpu, - tpu_forwards, - storage_addr, - rpc, - rpc_pubsub, - serve_repair, + gossip: socketaddr!("127.0.0.1:1234"), + tvu: socketaddr!("127.0.0.1:1235"), + tvu_forwards: socketaddr!("127.0.0.1:1236"), + repair: socketaddr!("127.0.0.1:1237"), + tpu: socketaddr!("127.0.0.1:1238"), + tpu_forwards: socketaddr!("127.0.0.1:1239"), + storage_addr: socketaddr!("127.0.0.1:1240"), + rpc: socketaddr!("127.0.0.1:1241"), + rpc_pubsub: socketaddr!("127.0.0.1:1242"), + serve_repair: socketaddr!("127.0.0.1:1243"), wallclock: now, shred_version: 0, } } - pub fn new_localhost(id: &Pubkey, now: u64) -> Self { - Self::new( - id, - socketaddr!("127.0.0.1:1234"), - socketaddr!("127.0.0.1:1235"), - socketaddr!("127.0.0.1:1236"), - socketaddr!("127.0.0.1:1237"), - socketaddr!("127.0.0.1:1238"), - socketaddr!("127.0.0.1:1239"), - socketaddr!("127.0.0.1:1240"), - socketaddr!("127.0.0.1:1241"), - socketaddr!("127.0.0.1:1242"), - socketaddr!("127.0.0.1:1243"), - now, - ) - } - #[cfg(test)] /// ContactInfo with multicast addresses for adversarial testing. pub fn new_multicast() -> Self { let addr = socketaddr!("224.0.1.255:1000"); assert!(addr.ip().is_multicast()); - Self::new( - &Pubkey::new_rand(), - addr, - addr, - addr, - addr, - addr, - addr, - addr, - addr, - addr, - addr, - 0, - ) + Self { + id: Pubkey::new_rand(), + gossip: addr, + tvu: addr, + tvu_forwards: addr, + repair: addr, + tpu: addr, + tpu_forwards: addr, + storage_addr: addr, + rpc: addr, + rpc_pubsub: addr, + serve_repair: addr, + wallclock: 0, + shred_version: 0, + } } #[cfg(test)] @@ -173,29 +143,30 @@ impl ContactInfo { nxt_addr } - let tpu_addr = *bind_addr; - let gossip_addr = next_port(&bind_addr, 1); - let tvu_addr = next_port(&bind_addr, 2); - let tpu_forwards_addr = next_port(&bind_addr, 3); - let tvu_forwards_addr = next_port(&bind_addr, 4); + let tpu = *bind_addr; + let gossip = next_port(&bind_addr, 1); + let tvu = next_port(&bind_addr, 2); + let tpu_forwards = next_port(&bind_addr, 3); + let tvu_forwards = next_port(&bind_addr, 4); let repair = next_port(&bind_addr, 5); - let rpc_addr = SocketAddr::new(bind_addr.ip(), rpc_port::DEFAULT_RPC_PORT); - let rpc_pubsub_addr = SocketAddr::new(bind_addr.ip(), rpc_port::DEFAULT_RPC_PUBSUB_PORT); + let rpc = SocketAddr::new(bind_addr.ip(), rpc_port::DEFAULT_RPC_PORT); + let rpc_pubsub = SocketAddr::new(bind_addr.ip(), rpc_port::DEFAULT_RPC_PUBSUB_PORT); let serve_repair = next_port(&bind_addr, 6); - Self::new( - pubkey, - gossip_addr, - tvu_addr, - tvu_forwards_addr, + Self { + id: *pubkey, + gossip, + tvu, + tvu_forwards, repair, - tpu_addr, - tpu_forwards_addr, - "0.0.0.0:0".parse().unwrap(), - rpc_addr, - rpc_pubsub_addr, + tpu, + tpu_forwards, + storage_addr: "0.0.0.0:0".parse().unwrap(), + rpc, + rpc_pubsub, serve_repair, - timestamp(), - ) + wallclock: timestamp(), + shred_version: 0, + } } #[cfg(test)] @@ -206,21 +177,12 @@ impl ContactInfo { // Construct a ContactInfo that's only usable for gossip pub fn new_gossip_entry_point(gossip_addr: &SocketAddr) -> Self { - let daddr: SocketAddr = socketaddr!("0.0.0.0:0"); - Self::new( - &Pubkey::default(), - *gossip_addr, - daddr, - daddr, - daddr, - daddr, - daddr, - daddr, - daddr, - daddr, - daddr, - timestamp(), - ) + Self { + id: Pubkey::default(), + gossip: *gossip_addr, + wallclock: timestamp(), + ..ContactInfo::default() + } } fn is_valid_ip(addr: IpAddr) -> bool { diff --git a/core/src/serve_repair.rs b/core/src/serve_repair.rs index 535ab554f..623ec622b 100644 --- a/core/src/serve_repair.rs +++ b/core/src/serve_repair.rs @@ -498,20 +498,21 @@ mod tests { let ledger_path = get_tmp_ledger_path!(); { let blockstore = Arc::new(Blockstore::open(&ledger_path).unwrap()); - let me = ContactInfo::new( - &Pubkey::new_rand(), - socketaddr!("127.0.0.1:1234"), - socketaddr!("127.0.0.1:1235"), - socketaddr!("127.0.0.1:1236"), - socketaddr!("127.0.0.1:1237"), - socketaddr!("127.0.0.1:1238"), - socketaddr!("127.0.0.1:1239"), - socketaddr!("127.0.0.1:1240"), - socketaddr!("127.0.0.1:1241"), - socketaddr!("127.0.0.1:1242"), - socketaddr!("127.0.0.1:1243"), - 0, - ); + let me = ContactInfo { + id: Pubkey::new_rand(), + gossip: socketaddr!("127.0.0.1:1234"), + tvu: socketaddr!("127.0.0.1:1235"), + tvu_forwards: socketaddr!("127.0.0.1:1236"), + repair: socketaddr!("127.0.0.1:1237"), + tpu: socketaddr!("127.0.0.1:1238"), + tpu_forwards: socketaddr!("127.0.0.1:1239"), + storage_addr: socketaddr!("127.0.0.1:1240"), + rpc: socketaddr!("127.0.0.1:1241"), + rpc_pubsub: socketaddr!("127.0.0.1:1242"), + serve_repair: socketaddr!("127.0.0.1:1243"), + wallclock: 0, + shred_version: 0, + }; let rv = ServeRepair::run_window_request( &recycler, &me, @@ -569,20 +570,21 @@ mod tests { assert_matches!(rv, Err(Error::ClusterInfoError(ClusterInfoError::NoPeers))); let serve_repair_addr = socketaddr!([127, 0, 0, 1], 1243); - let nxt = ContactInfo::new( - &Pubkey::new_rand(), - socketaddr!([127, 0, 0, 1], 1234), - socketaddr!([127, 0, 0, 1], 1235), - socketaddr!([127, 0, 0, 1], 1236), - socketaddr!([127, 0, 0, 1], 1237), - socketaddr!([127, 0, 0, 1], 1238), - socketaddr!([127, 0, 0, 1], 1239), - socketaddr!([127, 0, 0, 1], 1240), - socketaddr!([127, 0, 0, 1], 1241), - socketaddr!([127, 0, 0, 1], 1242), - serve_repair_addr, - 0, - ); + let nxt = ContactInfo { + id: Pubkey::new_rand(), + gossip: socketaddr!([127, 0, 0, 1], 1234), + tvu: socketaddr!([127, 0, 0, 1], 1235), + tvu_forwards: socketaddr!([127, 0, 0, 1], 1236), + repair: socketaddr!([127, 0, 0, 1], 1237), + tpu: socketaddr!([127, 0, 0, 1], 1238), + tpu_forwards: socketaddr!([127, 0, 0, 1], 1239), + storage_addr: socketaddr!([127, 0, 0, 1], 1240), + rpc: socketaddr!([127, 0, 0, 1], 1241), + rpc_pubsub: socketaddr!([127, 0, 0, 1], 1242), + serve_repair: serve_repair_addr, + wallclock: 0, + shred_version: 0, + }; cluster_info.write().unwrap().insert_info(nxt.clone()); let rv = serve_repair .repair_request(&RepairType::Shred(0, 0)) @@ -591,20 +593,21 @@ mod tests { assert_eq!(rv.0, nxt.serve_repair); let serve_repair_addr2 = socketaddr!([127, 0, 0, 2], 1243); - let nxt = ContactInfo::new( - &Pubkey::new_rand(), - socketaddr!([127, 0, 0, 1], 1234), - socketaddr!([127, 0, 0, 1], 1235), - socketaddr!([127, 0, 0, 1], 1236), - socketaddr!([127, 0, 0, 1], 1237), - socketaddr!([127, 0, 0, 1], 1238), - socketaddr!([127, 0, 0, 1], 1239), - socketaddr!([127, 0, 0, 1], 1240), - socketaddr!([127, 0, 0, 1], 1241), - socketaddr!([127, 0, 0, 1], 1242), - serve_repair_addr2, - 0, - ); + let nxt = ContactInfo { + id: Pubkey::new_rand(), + gossip: socketaddr!([127, 0, 0, 1], 1234), + tvu: socketaddr!([127, 0, 0, 1], 1235), + tvu_forwards: socketaddr!([127, 0, 0, 1], 1236), + repair: socketaddr!([127, 0, 0, 1], 1237), + tpu: socketaddr!([127, 0, 0, 1], 1238), + tpu_forwards: socketaddr!([127, 0, 0, 1], 1239), + storage_addr: socketaddr!([127, 0, 0, 1], 1240), + rpc: socketaddr!([127, 0, 0, 1], 1241), + rpc_pubsub: socketaddr!([127, 0, 0, 1], 1242), + serve_repair: serve_repair_addr2, + wallclock: 0, + shred_version: 0, + }; cluster_info.write().unwrap().insert_info(nxt); let mut one = false; let mut two = false;