Remove core dependencies from SendTransactionService (#10965)
* Remove core dependencies from SendTransactionService * Fix clippy warnings
This commit is contained in:
parent
ebadbce920
commit
17a8cc862b
|
@ -176,6 +176,7 @@ impl JsonRpcRequestProcessor {
|
||||||
let blockstore = Arc::new(Blockstore::open(&get_tmp_ledger_path!()).unwrap());
|
let blockstore = Arc::new(Blockstore::open(&get_tmp_ledger_path!()).unwrap());
|
||||||
let exit = Arc::new(AtomicBool::new(false));
|
let exit = Arc::new(AtomicBool::new(false));
|
||||||
let cluster_info = Arc::new(ClusterInfo::default());
|
let cluster_info = Arc::new(ClusterInfo::default());
|
||||||
|
let tpu_address = cluster_info.my_contact_info().tpu;
|
||||||
Self {
|
Self {
|
||||||
config: JsonRpcConfig::default(),
|
config: JsonRpcConfig::default(),
|
||||||
bank_forks: bank_forks.clone(),
|
bank_forks: bank_forks.clone(),
|
||||||
|
@ -190,10 +191,10 @@ impl JsonRpcRequestProcessor {
|
||||||
blockstore,
|
blockstore,
|
||||||
validator_exit: create_validator_exit(&exit),
|
validator_exit: create_validator_exit(&exit),
|
||||||
health: Arc::new(RpcHealth::new(cluster_info.clone(), None, 0, exit.clone())),
|
health: Arc::new(RpcHealth::new(cluster_info.clone(), None, 0, exit.clone())),
|
||||||
cluster_info: cluster_info.clone(),
|
cluster_info,
|
||||||
genesis_hash,
|
genesis_hash,
|
||||||
send_transaction_service: Arc::new(SendTransactionService::new(
|
send_transaction_service: Arc::new(SendTransactionService::new(
|
||||||
&cluster_info,
|
tpu_address,
|
||||||
&bank_forks,
|
&bank_forks,
|
||||||
&exit,
|
&exit,
|
||||||
)),
|
)),
|
||||||
|
@ -1867,6 +1868,7 @@ pub mod tests {
|
||||||
let _ = bank.process_transaction(&tx);
|
let _ = bank.process_transaction(&tx);
|
||||||
|
|
||||||
let cluster_info = Arc::new(ClusterInfo::default());
|
let cluster_info = Arc::new(ClusterInfo::default());
|
||||||
|
let tpu_address = cluster_info.my_contact_info().tpu;
|
||||||
|
|
||||||
cluster_info.insert_info(ContactInfo::new_with_pubkey_socketaddr(
|
cluster_info.insert_info(ContactInfo::new_with_pubkey_socketaddr(
|
||||||
&leader_pubkey,
|
&leader_pubkey,
|
||||||
|
@ -1886,11 +1888,7 @@ pub mod tests {
|
||||||
RpcHealth::stub(),
|
RpcHealth::stub(),
|
||||||
cluster_info.clone(),
|
cluster_info.clone(),
|
||||||
Hash::default(),
|
Hash::default(),
|
||||||
Arc::new(SendTransactionService::new(
|
Arc::new(SendTransactionService::new(tpu_address, &bank_forks, &exit)),
|
||||||
&cluster_info,
|
|
||||||
&bank_forks,
|
|
||||||
&exit,
|
|
||||||
)),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
cluster_info.insert_info(ContactInfo::new_with_pubkey_socketaddr(
|
cluster_info.insert_info(ContactInfo::new_with_pubkey_socketaddr(
|
||||||
|
@ -3021,6 +3019,7 @@ pub mod tests {
|
||||||
let rpc = RpcSolImpl;
|
let rpc = RpcSolImpl;
|
||||||
io.extend_with(rpc.to_delegate());
|
io.extend_with(rpc.to_delegate());
|
||||||
let cluster_info = Arc::new(ClusterInfo::default());
|
let cluster_info = Arc::new(ClusterInfo::default());
|
||||||
|
let tpu_address = cluster_info.my_contact_info().tpu;
|
||||||
let bank_forks = new_bank_forks().0;
|
let bank_forks = new_bank_forks().0;
|
||||||
let meta = JsonRpcRequestProcessor::new(
|
let meta = JsonRpcRequestProcessor::new(
|
||||||
JsonRpcConfig::default(),
|
JsonRpcConfig::default(),
|
||||||
|
@ -3029,13 +3028,9 @@ pub mod tests {
|
||||||
blockstore,
|
blockstore,
|
||||||
validator_exit,
|
validator_exit,
|
||||||
RpcHealth::stub(),
|
RpcHealth::stub(),
|
||||||
cluster_info.clone(),
|
cluster_info,
|
||||||
Hash::default(),
|
Hash::default(),
|
||||||
Arc::new(SendTransactionService::new(
|
Arc::new(SendTransactionService::new(tpu_address, &bank_forks, &exit)),
|
||||||
&cluster_info,
|
|
||||||
&bank_forks,
|
|
||||||
&exit,
|
|
||||||
)),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
let req = r#"{"jsonrpc":"2.0","id":1,"method":"sendTransaction","params":["37u9WtQpcm6ULa3Vmu7ySnANv"]}"#;
|
let req = r#"{"jsonrpc":"2.0","id":1,"method":"sendTransaction","params":["37u9WtQpcm6ULa3Vmu7ySnANv"]}"#;
|
||||||
|
@ -3064,6 +3059,7 @@ pub mod tests {
|
||||||
let cluster_info = Arc::new(ClusterInfo::new_with_invalid_keypair(
|
let cluster_info = Arc::new(ClusterInfo::new_with_invalid_keypair(
|
||||||
ContactInfo::new_with_socketaddr(&socketaddr!("127.0.0.1:1234")),
|
ContactInfo::new_with_socketaddr(&socketaddr!("127.0.0.1:1234")),
|
||||||
));
|
));
|
||||||
|
let tpu_address = cluster_info.my_contact_info().tpu;
|
||||||
let meta = JsonRpcRequestProcessor::new(
|
let meta = JsonRpcRequestProcessor::new(
|
||||||
JsonRpcConfig::default(),
|
JsonRpcConfig::default(),
|
||||||
bank_forks.clone(),
|
bank_forks.clone(),
|
||||||
|
@ -3071,13 +3067,9 @@ pub mod tests {
|
||||||
blockstore,
|
blockstore,
|
||||||
validator_exit,
|
validator_exit,
|
||||||
health.clone(),
|
health.clone(),
|
||||||
cluster_info.clone(),
|
cluster_info,
|
||||||
Hash::default(),
|
Hash::default(),
|
||||||
Arc::new(SendTransactionService::new(
|
Arc::new(SendTransactionService::new(tpu_address, &bank_forks, &exit)),
|
||||||
&cluster_info,
|
|
||||||
&bank_forks,
|
|
||||||
&exit,
|
|
||||||
)),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
let mut bad_transaction =
|
let mut bad_transaction =
|
||||||
|
@ -3185,7 +3177,7 @@ pub mod tests {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn new_bank_forks() -> (Arc<RwLock<BankForks>>, Keypair, Keypair) {
|
fn new_bank_forks() -> (Arc<RwLock<BankForks>>, Keypair, Keypair) {
|
||||||
let GenesisConfigInfo {
|
let GenesisConfigInfo {
|
||||||
mut genesis_config,
|
mut genesis_config,
|
||||||
mint_keypair,
|
mint_keypair,
|
||||||
|
@ -3213,6 +3205,7 @@ pub mod tests {
|
||||||
let blockstore = Arc::new(Blockstore::open(&ledger_path).unwrap());
|
let blockstore = Arc::new(Blockstore::open(&ledger_path).unwrap());
|
||||||
let block_commitment_cache = Arc::new(RwLock::new(BlockCommitmentCache::default()));
|
let block_commitment_cache = Arc::new(RwLock::new(BlockCommitmentCache::default()));
|
||||||
let cluster_info = Arc::new(ClusterInfo::default());
|
let cluster_info = Arc::new(ClusterInfo::default());
|
||||||
|
let tpu_address = cluster_info.my_contact_info().tpu;
|
||||||
let bank_forks = new_bank_forks().0;
|
let bank_forks = new_bank_forks().0;
|
||||||
let request_processor = JsonRpcRequestProcessor::new(
|
let request_processor = JsonRpcRequestProcessor::new(
|
||||||
JsonRpcConfig::default(),
|
JsonRpcConfig::default(),
|
||||||
|
@ -3221,13 +3214,9 @@ pub mod tests {
|
||||||
blockstore,
|
blockstore,
|
||||||
validator_exit,
|
validator_exit,
|
||||||
RpcHealth::stub(),
|
RpcHealth::stub(),
|
||||||
cluster_info.clone(),
|
cluster_info,
|
||||||
Hash::default(),
|
Hash::default(),
|
||||||
Arc::new(SendTransactionService::new(
|
Arc::new(SendTransactionService::new(tpu_address, &bank_forks, &exit)),
|
||||||
&cluster_info,
|
|
||||||
&bank_forks,
|
|
||||||
&exit,
|
|
||||||
)),
|
|
||||||
);
|
);
|
||||||
assert_eq!(request_processor.validator_exit(), false);
|
assert_eq!(request_processor.validator_exit(), false);
|
||||||
assert_eq!(exit.load(Ordering::Relaxed), false);
|
assert_eq!(exit.load(Ordering::Relaxed), false);
|
||||||
|
@ -3244,6 +3233,7 @@ pub mod tests {
|
||||||
config.enable_validator_exit = true;
|
config.enable_validator_exit = true;
|
||||||
let bank_forks = new_bank_forks().0;
|
let bank_forks = new_bank_forks().0;
|
||||||
let cluster_info = Arc::new(ClusterInfo::default());
|
let cluster_info = Arc::new(ClusterInfo::default());
|
||||||
|
let tpu_address = cluster_info.my_contact_info().tpu;
|
||||||
let request_processor = JsonRpcRequestProcessor::new(
|
let request_processor = JsonRpcRequestProcessor::new(
|
||||||
config,
|
config,
|
||||||
bank_forks.clone(),
|
bank_forks.clone(),
|
||||||
|
@ -3251,13 +3241,9 @@ pub mod tests {
|
||||||
blockstore,
|
blockstore,
|
||||||
validator_exit,
|
validator_exit,
|
||||||
RpcHealth::stub(),
|
RpcHealth::stub(),
|
||||||
cluster_info.clone(),
|
cluster_info,
|
||||||
Hash::default(),
|
Hash::default(),
|
||||||
Arc::new(SendTransactionService::new(
|
Arc::new(SendTransactionService::new(tpu_address, &bank_forks, &exit)),
|
||||||
&cluster_info,
|
|
||||||
&bank_forks,
|
|
||||||
&exit,
|
|
||||||
)),
|
|
||||||
);
|
);
|
||||||
assert_eq!(request_processor.validator_exit(), true);
|
assert_eq!(request_processor.validator_exit(), true);
|
||||||
assert_eq!(exit.load(Ordering::Relaxed), true);
|
assert_eq!(exit.load(Ordering::Relaxed), true);
|
||||||
|
@ -3334,6 +3320,7 @@ pub mod tests {
|
||||||
let mut config = JsonRpcConfig::default();
|
let mut config = JsonRpcConfig::default();
|
||||||
config.enable_validator_exit = true;
|
config.enable_validator_exit = true;
|
||||||
let cluster_info = Arc::new(ClusterInfo::default());
|
let cluster_info = Arc::new(ClusterInfo::default());
|
||||||
|
let tpu_address = cluster_info.my_contact_info().tpu;
|
||||||
let request_processor = JsonRpcRequestProcessor::new(
|
let request_processor = JsonRpcRequestProcessor::new(
|
||||||
config,
|
config,
|
||||||
bank_forks.clone(),
|
bank_forks.clone(),
|
||||||
|
@ -3341,13 +3328,9 @@ pub mod tests {
|
||||||
blockstore,
|
blockstore,
|
||||||
validator_exit,
|
validator_exit,
|
||||||
RpcHealth::stub(),
|
RpcHealth::stub(),
|
||||||
cluster_info.clone(),
|
cluster_info,
|
||||||
Hash::default(),
|
Hash::default(),
|
||||||
Arc::new(SendTransactionService::new(
|
Arc::new(SendTransactionService::new(tpu_address, &bank_forks, &exit)),
|
||||||
&cluster_info,
|
|
||||||
&bank_forks,
|
|
||||||
&exit,
|
|
||||||
)),
|
|
||||||
);
|
);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
request_processor.get_block_commitment(0),
|
request_processor.get_block_commitment(0),
|
||||||
|
|
|
@ -250,9 +250,10 @@ impl JsonRpcService {
|
||||||
override_health_check,
|
override_health_check,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
let tpu_address = cluster_info.my_contact_info().tpu;
|
||||||
let exit_send_transaction_service = Arc::new(AtomicBool::new(false));
|
let exit_send_transaction_service = Arc::new(AtomicBool::new(false));
|
||||||
let send_transaction_service = Arc::new(SendTransactionService::new(
|
let send_transaction_service = Arc::new(SendTransactionService::new(
|
||||||
&cluster_info,
|
tpu_address,
|
||||||
&bank_forks,
|
&bank_forks,
|
||||||
&exit_send_transaction_service,
|
&exit_send_transaction_service,
|
||||||
));
|
));
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
use crate::cluster_info::ClusterInfo;
|
|
||||||
use solana_metrics::{datapoint_warn, inc_new_counter_info};
|
use solana_metrics::{datapoint_warn, inc_new_counter_info};
|
||||||
use solana_runtime::{bank::Bank, bank_forks::BankForks};
|
use solana_runtime::{bank::Bank, bank_forks::BankForks};
|
||||||
use solana_sdk::{clock::Slot, signature::Signature};
|
use solana_sdk::{clock::Slot, signature::Signature};
|
||||||
|
@ -41,12 +40,11 @@ struct ProcessTransactionsResult {
|
||||||
|
|
||||||
impl SendTransactionService {
|
impl SendTransactionService {
|
||||||
pub fn new(
|
pub fn new(
|
||||||
cluster_info: &Arc<ClusterInfo>,
|
tpu_address: SocketAddr,
|
||||||
bank_forks: &Arc<RwLock<BankForks>>,
|
bank_forks: &Arc<RwLock<BankForks>>,
|
||||||
exit: &Arc<AtomicBool>,
|
exit: &Arc<AtomicBool>,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
let (sender, receiver) = channel::<TransactionInfo>();
|
let (sender, receiver) = channel::<TransactionInfo>();
|
||||||
let tpu_address = cluster_info.my_contact_info().tpu;
|
|
||||||
|
|
||||||
let thread = Self::retry_thread(receiver, bank_forks.clone(), tpu_address, exit.clone());
|
let thread = Self::retry_thread(receiver, bank_forks.clone(), tpu_address, exit.clone());
|
||||||
Self {
|
Self {
|
||||||
|
@ -192,17 +190,19 @@ impl SendTransactionService {
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::rpc::tests::new_bank_forks;
|
use solana_sdk::{
|
||||||
use solana_sdk::{pubkey::Pubkey, signature::Signer};
|
genesis_config::create_genesis_config, pubkey::Pubkey, signature::Signer,
|
||||||
|
system_transaction,
|
||||||
|
};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn service_exit() {
|
fn service_exit() {
|
||||||
let cluster_info = Arc::new(ClusterInfo::default());
|
let tpu_address = "127.0.0.1:0".parse().unwrap();
|
||||||
let bank_forks = new_bank_forks().0;
|
let bank = Bank::default();
|
||||||
|
let bank_forks = Arc::new(RwLock::new(BankForks::new(bank)));
|
||||||
let exit = Arc::new(AtomicBool::new(false));
|
let exit = Arc::new(AtomicBool::new(false));
|
||||||
|
|
||||||
let send_tranaction_service =
|
let send_tranaction_service = SendTransactionService::new(tpu_address, &bank_forks, &exit);
|
||||||
SendTransactionService::new(&cluster_info, &bank_forks, &exit);
|
|
||||||
|
|
||||||
exit.store(true, Ordering::Relaxed);
|
exit.store(true, Ordering::Relaxed);
|
||||||
send_tranaction_service.join().unwrap();
|
send_tranaction_service.join().unwrap();
|
||||||
|
@ -212,10 +212,11 @@ mod test {
|
||||||
fn process_transactions() {
|
fn process_transactions() {
|
||||||
solana_logger::setup();
|
solana_logger::setup();
|
||||||
|
|
||||||
let (bank_forks, mint_keypair, _voting_keypair) = new_bank_forks();
|
let (genesis_config, mint_keypair) = create_genesis_config(4);
|
||||||
let cluster_info = ClusterInfo::default();
|
let bank = Bank::new(&genesis_config);
|
||||||
|
let bank_forks = Arc::new(RwLock::new(BankForks::new(bank)));
|
||||||
let send_socket = UdpSocket::bind("0.0.0.0:0").unwrap();
|
let send_socket = UdpSocket::bind("0.0.0.0:0").unwrap();
|
||||||
let tpu_address = cluster_info.my_contact_info().tpu;
|
let tpu_address = "127.0.0.1:0".parse().unwrap();
|
||||||
|
|
||||||
let root_bank = Arc::new(Bank::new_from_parent(
|
let root_bank = Arc::new(Bank::new_from_parent(
|
||||||
&bank_forks.read().unwrap().working_bank(),
|
&bank_forks.read().unwrap().working_bank(),
|
||||||
|
@ -234,12 +235,8 @@ mod test {
|
||||||
|
|
||||||
let failed_signature = {
|
let failed_signature = {
|
||||||
let blockhash = working_bank.last_blockhash();
|
let blockhash = working_bank.last_blockhash();
|
||||||
let transaction = solana_sdk::system_transaction::transfer(
|
let transaction =
|
||||||
&mint_keypair,
|
system_transaction::transfer(&mint_keypair, &Pubkey::default(), 1, blockhash);
|
||||||
&Pubkey::default(),
|
|
||||||
1,
|
|
||||||
blockhash,
|
|
||||||
);
|
|
||||||
let signature = transaction.signatures[0];
|
let signature = transaction.signatures[0];
|
||||||
working_bank.process_transaction(&transaction).unwrap_err();
|
working_bank.process_transaction(&transaction).unwrap_err();
|
||||||
signature
|
signature
|
||||||
|
|
Loading…
Reference in New Issue