Update replicator to use cluster_info instead of cached client (#4302)

This commit is contained in:
Sagar Dhawan 2019-05-15 18:14:04 -07:00 committed by GitHub
parent 481853e1b1
commit d8735df1de
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 16 deletions

View File

@ -65,7 +65,7 @@ pub struct Replicator {
keypair: Arc<Keypair>, keypair: Arc<Keypair>,
storage_keypair: Arc<Keypair>, storage_keypair: Arc<Keypair>,
signature: ed25519_dalek::Signature, signature: ed25519_dalek::Signature,
client: ThinClient, cluster_info: Arc<RwLock<ClusterInfo>>,
ledger_data_file_encrypted: PathBuf, ledger_data_file_encrypted: PathBuf,
sampling_offsets: Vec<u64>, sampling_offsets: Vec<u64>,
hash: Hash, hash: Hash,
@ -263,8 +263,9 @@ impl Replicator {
let t_replicate = { let t_replicate = {
let exit = exit.clone(); let exit = exit.clone();
let blocktree = blocktree.clone(); let blocktree = blocktree.clone();
let cluster_info = cluster_info.clone();
spawn(move || { spawn(move || {
Self::wait_for_ledger_download(slot, &blocktree, &exit, &node_info, &cluster_info) Self::wait_for_ledger_download(slot, &blocktree, &exit, &node_info, cluster_info)
}) })
}; };
//always push this last //always push this last
@ -281,7 +282,7 @@ impl Replicator {
keypair, keypair,
storage_keypair, storage_keypair,
signature, signature,
client, cluster_info,
ledger_data_file_encrypted: PathBuf::default(), ledger_data_file_encrypted: PathBuf::default(),
sampling_offsets: vec![], sampling_offsets: vec![],
hash: Hash::default(), hash: Hash::default(),
@ -314,7 +315,7 @@ impl Replicator {
blocktree: &Arc<Blocktree>, blocktree: &Arc<Blocktree>,
exit: &Arc<AtomicBool>, exit: &Arc<AtomicBool>,
node_info: &ContactInfo, node_info: &ContactInfo,
cluster_info: &Arc<RwLock<ClusterInfo>>, cluster_info: Arc<RwLock<ClusterInfo>>,
) { ) {
info!( info!(
"window created, waiting for ledger download starting at slot {:?}", "window created, waiting for ledger download starting at slot {:?}",
@ -447,24 +448,18 @@ impl Replicator {
fn submit_mining_proof(&self) { fn submit_mining_proof(&self) {
// No point if we've got no storage account... // No point if we've got no storage account...
let nodes = self.cluster_info.read().unwrap().tvu_peers();
let client = crate::gossip_service::get_client(&nodes);
assert!( assert!(
self.client client
.poll_get_balance(&self.storage_keypair.pubkey()) .poll_get_balance(&self.storage_keypair.pubkey())
.unwrap() .unwrap()
> 0 > 0
); );
// ...or no lamports for fees // ...or no lamports for fees
assert!( assert!(client.poll_get_balance(&self.keypair.pubkey()).unwrap() > 0);
self.client
.poll_get_balance(&self.keypair.pubkey())
.unwrap()
> 0
);
let (blockhash, _) = self let (blockhash, _) = client.get_recent_blockhash().expect("No recent blockhash");
.client
.get_recent_blockhash()
.expect("No recent blockhash");
let instruction = storage_instruction::mining_proof( let instruction = storage_instruction::mining_proof(
&self.storage_keypair.pubkey(), &self.storage_keypair.pubkey(),
self.hash, self.hash,
@ -477,7 +472,7 @@ impl Replicator {
message, message,
blockhash, blockhash,
); );
self.client client
.send_and_confirm_transaction( .send_and_confirm_transaction(
&[&self.keypair, &self.storage_keypair], &[&self.keypair, &self.storage_keypair],
&mut transaction, &mut transaction,