From 9632136cdadadd42650fa20b4c667453fe0029e8 Mon Sep 17 00:00:00 2001 From: Michael Vines Date: Sat, 16 Mar 2019 23:29:11 -0700 Subject: [PATCH] Clean up stray retry_get_balance() function --- client/src/rpc_client.rs | 23 +++++++++++++++++++++++ client/src/thin_client.rs | 30 ++++-------------------------- core/src/local_cluster.rs | 10 +++++++--- core/src/replicator.rs | 4 ++-- tests/thin_client.rs | 5 +++-- 5 files changed, 39 insertions(+), 33 deletions(-) diff --git a/client/src/rpc_client.rs b/client/src/rpc_client.rs index f419b382e5..14cb34d72d 100644 --- a/client/src/rpc_client.rs +++ b/client/src/rpc_client.rs @@ -204,6 +204,29 @@ impl RpcClient { self.poll_balance_with_timeout(pubkey, &Duration::from_millis(100), &Duration::from_secs(1)) } + pub fn wait_for_balance(&self, pubkey: &Pubkey, expected_balance: Option) -> Option { + const LAST: usize = 30; + for run in 0..LAST { + let balance_result = self.poll_get_balance(pubkey); + if expected_balance.is_none() { + return balance_result.ok(); + } + trace!( + "retry_get_balance[{}] {:?} {:?}", + run, + balance_result, + expected_balance + ); + if let (Some(expected_balance), Ok(balance_result)) = (expected_balance, balance_result) + { + if expected_balance == balance_result { + return Some(balance_result); + } + } + } + None + } + /// Poll the server to confirm a transaction. pub fn poll_for_signature(&self, signature: &Signature) -> io::Result<()> { let now = Instant::now(); diff --git a/client/src/thin_client.rs b/client/src/thin_client.rs index 5cb1c1aa21..5d49eaaf7d 100644 --- a/client/src/thin_client.rs +++ b/client/src/thin_client.rs @@ -137,6 +137,10 @@ impl ThinClient { self.rpc_client.poll_get_balance(pubkey) } + pub fn wait_for_balance(&self, pubkey: &Pubkey, expected_balance: Option) -> Option { + self.rpc_client.wait_for_balance(pubkey, expected_balance) + } + pub fn poll_for_signature(&self, signature: &Signature) -> io::Result<()> { self.rpc_client.poll_for_signature(signature) } @@ -163,29 +167,3 @@ pub fn create_client_with_timeout( let (_, transactions_socket) = solana_netutil::bind_in_range(range).unwrap(); ThinClient::new_socket_with_timeout(rpc, tpu, transactions_socket, timeout) } - -pub fn retry_get_balance( - client: &ThinClient, - bob_pubkey: &Pubkey, - expected_balance: Option, -) -> Option { - const LAST: usize = 30; - for run in 0..LAST { - let balance_result = client.poll_get_balance(bob_pubkey); - if expected_balance.is_none() { - return balance_result.ok(); - } - trace!( - "retry_get_balance[{}] {:?} {:?}", - run, - balance_result, - expected_balance - ); - if let (Some(expected_balance), Ok(balance_result)) = (expected_balance, balance_result) { - if expected_balance == balance_result { - return Some(balance_result); - } - } - } - None -} diff --git a/core/src/local_cluster.rs b/core/src/local_cluster.rs index 670e1ece31..b11d75ce03 100644 --- a/core/src/local_cluster.rs +++ b/core/src/local_cluster.rs @@ -6,7 +6,7 @@ use crate::gossip_service::discover; use crate::replicator::Replicator; use crate::service::Service; use solana_client::thin_client::create_client; -use solana_client::thin_client::{retry_get_balance, ThinClient}; +use solana_client::thin_client::ThinClient; use solana_sdk::genesis_block::GenesisBlock; use solana_sdk::pubkey::Pubkey; use solana_sdk::signature::{Keypair, KeypairUtil}; @@ -209,7 +209,9 @@ impl LocalCluster { client .retry_transfer(&source_keypair, &mut tx, 5) .expect("client transfer"); - retry_get_balance(client, dest_pubkey, Some(lamports)).expect("get balance") + client + .wait_for_balance(dest_pubkey, Some(lamports)) + .expect("get balance") } fn create_and_fund_vote_account( @@ -234,7 +236,9 @@ impl LocalCluster { client .retry_transfer(&from_account, &mut transaction, 5) .expect("client transfer"); - retry_get_balance(client, &vote_account_pubkey, Some(amount)).expect("get balance"); + client + .wait_for_balance(&vote_account_pubkey, Some(amount)) + .expect("get balance"); // 2) Set delegate for new vote account let mut transaction = VoteTransaction::delegate_vote_account( diff --git a/core/src/replicator.rs b/core/src/replicator.rs index e3dd132879..32db48b743 100644 --- a/core/src/replicator.rs +++ b/core/src/replicator.rs @@ -14,7 +14,7 @@ use rand::thread_rng; use rand::Rng; use solana_client::rpc_client::RpcClient; use solana_client::rpc_request::RpcRequest; -use solana_client::thin_client::{create_client, retry_get_balance, ThinClient}; +use solana_client::thin_client::{create_client, ThinClient}; use solana_drone::drone::{request_airdrop_transaction, DRONE_PORT}; use solana_sdk::hash::{Hash, Hasher}; use solana_sdk::signature::{Keypair, KeypairUtil, Signature}; @@ -382,7 +382,7 @@ impl Replicator { keypair: &Keypair, cluster_entrypoint: &ContactInfo, ) { - if retry_get_balance(client, &keypair.pubkey(), None).is_none() { + if client.wait_for_balance(&keypair.pubkey(), None).is_none() { let mut drone_addr = cluster_entrypoint.tpu; drone_addr.set_port(DRONE_PORT); diff --git a/tests/thin_client.rs b/tests/thin_client.rs index 6b51729cbf..711751b472 100644 --- a/tests/thin_client.rs +++ b/tests/thin_client.rs @@ -4,7 +4,7 @@ use solana::cluster_info::FULLNODE_PORT_RANGE; use solana::fullnode::new_fullnode_for_tests; use solana::gossip_service::discover; use solana_client::thin_client::create_client; -use solana_client::thin_client::{retry_get_balance, ThinClient}; +use solana_client::thin_client::ThinClient; use solana_logger; use solana_sdk::hash::Hash; use solana_sdk::pubkey::Pubkey; @@ -129,7 +129,8 @@ fn test_register_vote_account() { let signature = client.transfer_signed(&transaction).unwrap(); client.poll_for_signature(&signature).unwrap(); - let balance = retry_get_balance(&client, &vote_account_id, Some(1)) + let balance = client + .wait_for_balance(&vote_account_id, Some(1)) .expect("Expected balance for new account to exist"); assert_eq!(balance, 1);