Spy just for RPC to avoid premature supermajority (#7856)
* Spy just for RPC to avoid premature supermajority * Make gossip_content_info private Co-Authored-By: Michael Vines <mvines@gmail.com> * Fix misindent... Co-authored-by: Michael Vines <mvines@gmail.com>
This commit is contained in:
parent
43c32ea280
commit
a8d33c9950
|
@ -1616,6 +1616,30 @@ impl ClusterInfo {
|
||||||
.unwrap()
|
.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.
|
/// An alternative to Spy Node that has a valid gossip address and fully participate in Gossip.
|
||||||
pub fn gossip_node(
|
pub fn gossip_node(
|
||||||
id: &Pubkey,
|
id: &Pubkey,
|
||||||
|
@ -1623,43 +1647,17 @@ impl ClusterInfo {
|
||||||
) -> (ContactInfo, UdpSocket, Option<TcpListener>) {
|
) -> (ContactInfo, UdpSocket, Option<TcpListener>) {
|
||||||
let (port, (gossip_socket, ip_echo)) =
|
let (port, (gossip_socket, ip_echo)) =
|
||||||
Node::get_gossip_port(gossip_addr, VALIDATOR_PORT_RANGE);
|
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(
|
(contact_info, gossip_socket, Some(ip_echo))
|
||||||
id,
|
|
||||||
SocketAddr::new(gossip_addr.ip(), port),
|
|
||||||
daddr,
|
|
||||||
daddr,
|
|
||||||
daddr,
|
|
||||||
daddr,
|
|
||||||
daddr,
|
|
||||||
daddr,
|
|
||||||
daddr,
|
|
||||||
daddr,
|
|
||||||
timestamp(),
|
|
||||||
);
|
|
||||||
(node, 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<TcpListener>) {
|
pub fn spy_node(id: &Pubkey) -> (ContactInfo, UdpSocket, Option<TcpListener>) {
|
||||||
let (_, gossip_socket) = bind_in_range(VALIDATOR_PORT_RANGE).unwrap();
|
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(
|
(contact_info, gossip_socket, None)
|
||||||
id,
|
|
||||||
daddr,
|
|
||||||
daddr,
|
|
||||||
daddr,
|
|
||||||
daddr,
|
|
||||||
daddr,
|
|
||||||
daddr,
|
|
||||||
daddr,
|
|
||||||
daddr,
|
|
||||||
daddr,
|
|
||||||
timestamp(),
|
|
||||||
);
|
|
||||||
(node, gossip_socket, None)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -198,7 +198,10 @@ fn get_rpc_addr(
|
||||||
identity_keypair: &Arc<Keypair>,
|
identity_keypair: &Arc<Keypair>,
|
||||||
entrypoint_gossip: &SocketAddr,
|
entrypoint_gossip: &SocketAddr,
|
||||||
) -> (RpcClient, 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));
|
cluster_info.set_entrypoint(ContactInfo::new_gossip_entry_point(entrypoint_gossip));
|
||||||
let cluster_info = Arc::new(RwLock::new(cluster_info));
|
let cluster_info = Arc::new(RwLock::new(cluster_info));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue