switch to `solana-tpu-client` from `solana_client::tpu_client` for `bench-tps`, `dos/`, `LocalCluster`, `gossip/` (#310)

* switch over to solana-tpu-client for bench-tps, dos, gossip, local-cluster

* put TpuClientWrapper back in solana_client
This commit is contained in:
Greg Cusack 2024-03-21 09:25:54 -07:00 committed by GitHub
parent b2f4fb306e
commit 792d7454d9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 38 additions and 24 deletions

1
Cargo.lock generated
View File

@ -5581,6 +5581,7 @@ dependencies = [
"solana-measure", "solana-measure",
"solana-metrics", "solana-metrics",
"solana-net-utils", "solana-net-utils",
"solana-quic-client",
"solana-rpc", "solana-rpc",
"solana-rpc-client", "solana-rpc-client",
"solana-rpc-client-api", "solana-rpc-client-api",

View File

@ -28,6 +28,7 @@ solana-logger = { workspace = true }
solana-measure = { workspace = true } solana-measure = { workspace = true }
solana-metrics = { workspace = true } solana-metrics = { workspace = true }
solana-net-utils = { workspace = true } solana-net-utils = { workspace = true }
solana-quic-client = { workspace = true }
solana-rpc = { workspace = true } solana-rpc = { workspace = true }
solana-rpc-client = { workspace = true } solana-rpc-client = { workspace = true }
solana-rpc-client-api = { workspace = true } solana-rpc-client-api = { workspace = true }

View File

@ -1,6 +1,5 @@
use { use {
crate::bench_tps_client::{BenchTpsClient, BenchTpsError, Result}, crate::bench_tps_client::{BenchTpsClient, BenchTpsError, Result},
solana_client::tpu_client::TpuClient,
solana_connection_cache::connection_cache::{ solana_connection_cache::connection_cache::{
ConnectionManager, ConnectionPool, NewConnectionConfig, ConnectionManager, ConnectionPool, NewConnectionConfig,
}, },
@ -10,6 +9,7 @@ use {
message::Message, pubkey::Pubkey, signature::Signature, slot_history::Slot, message::Message, pubkey::Pubkey, signature::Signature, slot_history::Slot,
transaction::Transaction, transaction::Transaction,
}, },
solana_tpu_client::tpu_client::TpuClient,
solana_transaction_status::UiConfirmedBlock, solana_transaction_status::UiConfirmedBlock,
}; };

View File

@ -8,10 +8,7 @@ use {
keypairs::get_keypairs, keypairs::get_keypairs,
send_batch::{generate_durable_nonce_accounts, generate_keypairs}, send_batch::{generate_durable_nonce_accounts, generate_keypairs},
}, },
solana_client::{ solana_client::connection_cache::ConnectionCache,
connection_cache::ConnectionCache,
tpu_client::{TpuClient, TpuClientConfig},
},
solana_genesis::Base64Account, solana_genesis::Base64Account,
solana_rpc_client::rpc_client::RpcClient, solana_rpc_client::rpc_client::RpcClient,
solana_sdk::{ solana_sdk::{
@ -22,6 +19,7 @@ use {
system_program, system_program,
}, },
solana_streamer::streamer::StakedNodes, solana_streamer::streamer::StakedNodes,
solana_tpu_client::tpu_client::{TpuClient, TpuClientConfig},
std::{ std::{
collections::HashMap, collections::HashMap,
fs::File, fs::File,

View File

@ -7,7 +7,7 @@ use {
cli::{Config, InstructionPaddingConfig}, cli::{Config, InstructionPaddingConfig},
send_batch::generate_durable_nonce_accounts, send_batch::generate_durable_nonce_accounts,
}, },
solana_client::tpu_client::{TpuClient, TpuClientConfig}, solana_connection_cache::connection_cache::NewConnectionConfig,
solana_core::validator::ValidatorConfig, solana_core::validator::ValidatorConfig,
solana_faucet::faucet::run_local_faucet, solana_faucet::faucet::run_local_faucet,
solana_local_cluster::{ solana_local_cluster::{
@ -15,6 +15,7 @@ use {
local_cluster::{ClusterConfig, LocalCluster}, local_cluster::{ClusterConfig, LocalCluster},
validator_configs::make_identical_validator_configs, validator_configs::make_identical_validator_configs,
}, },
solana_quic_client::{QuicConfig, QuicConnectionManager},
solana_rpc::rpc::JsonRpcConfig, solana_rpc::rpc::JsonRpcConfig,
solana_rpc_client::rpc_client::RpcClient, solana_rpc_client::rpc_client::RpcClient,
solana_sdk::{ solana_sdk::{
@ -26,6 +27,7 @@ use {
}, },
solana_streamer::socket::SocketAddrSpace, solana_streamer::socket::SocketAddrSpace,
solana_test_validator::TestValidatorGenesis, solana_test_validator::TestValidatorGenesis,
solana_tpu_client::tpu_client::{TpuClient, TpuClientConfig},
std::{sync::Arc, time::Duration}, std::{sync::Arc, time::Duration},
}; };
@ -124,8 +126,17 @@ fn test_bench_tps_test_validator(config: Config) {
CommitmentConfig::processed(), CommitmentConfig::processed(),
)); ));
let websocket_url = test_validator.rpc_pubsub_url(); let websocket_url = test_validator.rpc_pubsub_url();
let client =
Arc::new(TpuClient::new(rpc_client, &websocket_url, TpuClientConfig::default()).unwrap()); let client = Arc::new(
TpuClient::new(
"tpu_client_quic_bench_tps",
rpc_client,
&websocket_url,
TpuClientConfig::default(),
QuicConnectionManager::new_with_connection_config(QuicConfig::new().unwrap()),
)
.expect("Should build Quic Tpu Client."),
);
let lamports_per_account = 1000; let lamports_per_account = 1000;

View File

@ -21,11 +21,9 @@ pub use {
solana_tpu_client::tpu_client::{TpuClientConfig, DEFAULT_FANOUT_SLOTS, MAX_FANOUT_SLOTS}, solana_tpu_client::tpu_client::{TpuClientConfig, DEFAULT_FANOUT_SLOTS, MAX_FANOUT_SLOTS},
}; };
pub type QuicTpuClient = TpuClient<QuicPool, QuicConnectionManager, QuicConfig>;
pub enum TpuClientWrapper { pub enum TpuClientWrapper {
Quic(TpuClient<QuicPool, QuicConnectionManager, QuicConfig>), Quic(BackendTpuClient<QuicPool, QuicConnectionManager, QuicConfig>),
Udp(TpuClient<UdpPool, UdpConnectionManager, UdpConfig>), Udp(BackendTpuClient<UdpPool, UdpConnectionManager, UdpConfig>),
} }
/// Client which sends transactions directly to the current leader's TPU port over UDP. /// Client which sends transactions directly to the current leader's TPU port over UDP.

View File

@ -795,6 +795,7 @@ fn main() {
DEFAULT_TPU_CONNECTION_POOL_SIZE, DEFAULT_TPU_CONNECTION_POOL_SIZE,
), ),
}; };
let client = get_client(&validators, Arc::new(connection_cache)); let client = get_client(&validators, Arc::new(connection_cache));
(gossip_nodes, Some(client)) (gossip_nodes, Some(client))
} else { } else {
@ -818,7 +819,6 @@ fn main() {
pub mod test { pub mod test {
use { use {
super::*, super::*,
solana_client::tpu_client::QuicTpuClient,
solana_core::validator::ValidatorConfig, solana_core::validator::ValidatorConfig,
solana_faucet::faucet::run_local_faucet, solana_faucet::faucet::run_local_faucet,
solana_gossip::contact_info::LegacyContactInfo, solana_gossip::contact_info::LegacyContactInfo,
@ -827,8 +827,10 @@ pub mod test {
local_cluster::{ClusterConfig, LocalCluster}, local_cluster::{ClusterConfig, LocalCluster},
validator_configs::make_identical_validator_configs, validator_configs::make_identical_validator_configs,
}, },
solana_quic_client::{QuicConfig, QuicConnectionManager, QuicPool},
solana_rpc::rpc::JsonRpcConfig, solana_rpc::rpc::JsonRpcConfig,
solana_sdk::timing::timestamp, solana_sdk::timing::timestamp,
solana_tpu_client::tpu_client::TpuClient,
}; };
const TEST_SEND_BATCH_SIZE: usize = 1; const TEST_SEND_BATCH_SIZE: usize = 1;
@ -836,7 +838,9 @@ pub mod test {
// thin wrapper for the run_dos function // thin wrapper for the run_dos function
// to avoid specifying everywhere generic parameters // to avoid specifying everywhere generic parameters
fn run_dos_no_client(nodes: &[ContactInfo], iterations: usize, params: DosClientParameters) { fn run_dos_no_client(nodes: &[ContactInfo], iterations: usize, params: DosClientParameters) {
run_dos::<QuicTpuClient>(nodes, iterations, None, params); run_dos::<TpuClient<QuicPool, QuicConnectionManager, QuicConfig>>(
nodes, iterations, None, params,
);
} }
#[test] #[test]

View File

@ -5,9 +5,7 @@ use {
crossbeam_channel::{unbounded, Sender}, crossbeam_channel::{unbounded, Sender},
rand::{thread_rng, Rng}, rand::{thread_rng, Rng},
solana_client::{ solana_client::{
connection_cache::ConnectionCache, connection_cache::ConnectionCache, rpc_client::RpcClient, tpu_client::TpuClientWrapper,
rpc_client::RpcClient,
tpu_client::{TpuClient, TpuClientConfig, TpuClientWrapper},
}, },
solana_perf::recycler::Recycler, solana_perf::recycler::Recycler,
solana_runtime::bank_forks::BankForks, solana_runtime::bank_forks::BankForks,
@ -19,6 +17,7 @@ use {
socket::SocketAddrSpace, socket::SocketAddrSpace,
streamer::{self, StreamerReceiveStats}, streamer::{self, StreamerReceiveStats},
}, },
solana_tpu_client::tpu_client::{TpuClient, TpuClientConfig},
std::{ std::{
collections::HashSet, collections::HashSet,
net::{SocketAddr, TcpListener, UdpSocket}, net::{SocketAddr, TcpListener, UdpSocket},

View File

@ -1,13 +1,17 @@
use { use {
solana_client::{thin_client::ThinClient, tpu_client::QuicTpuClient}, solana_client::thin_client::ThinClient,
solana_core::validator::{Validator, ValidatorConfig}, solana_core::validator::{Validator, ValidatorConfig},
solana_gossip::{cluster_info::Node, contact_info::ContactInfo}, solana_gossip::{cluster_info::Node, contact_info::ContactInfo},
solana_ledger::shred::Shred, solana_ledger::shred::Shred,
solana_quic_client::{QuicConfig, QuicConnectionManager, QuicPool},
solana_sdk::{commitment_config::CommitmentConfig, pubkey::Pubkey, signature::Keypair}, solana_sdk::{commitment_config::CommitmentConfig, pubkey::Pubkey, signature::Keypair},
solana_streamer::socket::SocketAddrSpace, solana_streamer::socket::SocketAddrSpace,
solana_tpu_client::tpu_client::TpuClient,
std::{io::Result, path::PathBuf, sync::Arc}, std::{io::Result, path::PathBuf, sync::Arc},
}; };
pub type QuicTpuClient = TpuClient<QuicPool, QuicConnectionManager, QuicConfig>;
pub struct ValidatorInfo { pub struct ValidatorInfo {
pub keypair: Arc<Keypair>, pub keypair: Arc<Keypair>,
pub voting_keypair: Arc<Keypair>, pub voting_keypair: Arc<Keypair>,

View File

@ -1,6 +1,6 @@
use { use {
crate::{ crate::{
cluster::{Cluster, ClusterValidatorInfo, ValidatorInfo}, cluster::{Cluster, ClusterValidatorInfo, QuicTpuClient, ValidatorInfo},
cluster_tests, cluster_tests,
validator_configs::*, validator_configs::*,
}, },
@ -8,10 +8,7 @@ use {
log::*, log::*,
solana_accounts_db::utils::create_accounts_run_and_snapshot_dirs, solana_accounts_db::utils::create_accounts_run_and_snapshot_dirs,
solana_client::{ solana_client::{
connection_cache::ConnectionCache, connection_cache::ConnectionCache, rpc_client::RpcClient, thin_client::ThinClient,
rpc_client::RpcClient,
thin_client::ThinClient,
tpu_client::{QuicTpuClient, TpuClient, TpuClientConfig},
}, },
solana_core::{ solana_core::{
consensus::tower_storage::FileTowerStorage, consensus::tower_storage::FileTowerStorage,
@ -52,7 +49,8 @@ use {
solana_stake_program::stake_state, solana_stake_program::stake_state,
solana_streamer::socket::SocketAddrSpace, solana_streamer::socket::SocketAddrSpace,
solana_tpu_client::tpu_client::{ solana_tpu_client::tpu_client::{
DEFAULT_TPU_CONNECTION_POOL_SIZE, DEFAULT_TPU_ENABLE_UDP, DEFAULT_TPU_USE_QUIC, TpuClient, TpuClientConfig, DEFAULT_TPU_CONNECTION_POOL_SIZE, DEFAULT_TPU_ENABLE_UDP,
DEFAULT_TPU_USE_QUIC,
}, },
solana_vote_program::{ solana_vote_program::{
vote_instruction, vote_instruction,