Only send pubkey to ReplayStage

This commit is contained in:
Greg Fitzgerald
2019-01-30 20:28:48 -07:00
parent a74b24fdf0
commit 11f1c00ca7
2 changed files with 13 additions and 15 deletions

View File

@ -20,7 +20,7 @@ use crate::vote_signer_proxy::VoteSignerProxy;
use log::Level; use log::Level;
use solana_metrics::{influxdb, submit}; use solana_metrics::{influxdb, submit};
use solana_sdk::hash::Hash; use solana_sdk::hash::Hash;
use solana_sdk::signature::{Keypair, KeypairUtil}; use solana_sdk::pubkey::Pubkey;
use solana_sdk::timing::duration_as_ms; use solana_sdk::timing::duration_as_ms;
use std::net::UdpSocket; use std::net::UdpSocket;
use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering}; use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
@ -63,7 +63,7 @@ impl ReplayStage {
bank: &Arc<Bank>, bank: &Arc<Bank>,
cluster_info: &Arc<RwLock<ClusterInfo>>, cluster_info: &Arc<RwLock<ClusterInfo>>,
window_receiver: &EntryReceiver, window_receiver: &EntryReceiver,
keypair: &Arc<Keypair>, my_id: Pubkey,
vote_signer_proxy: Option<&Arc<VoteSignerProxy>>, vote_signer_proxy: Option<&Arc<VoteSignerProxy>>,
vote_blob_sender: Option<&BlobSender>, vote_blob_sender: Option<&BlobSender>,
ledger_entry_sender: &EntrySender, ledger_entry_sender: &EntrySender,
@ -108,7 +108,6 @@ impl ReplayStage {
let (current_leader, _) = bank let (current_leader, _) = bank
.get_current_leader() .get_current_leader()
.expect("Scheduled leader should be calculated by this point"); .expect("Scheduled leader should be calculated by this point");
let my_id = keypair.pubkey();
let already_leader = my_id == current_leader; let already_leader = my_id == current_leader;
let mut did_rotate = false; let mut did_rotate = false;
@ -205,7 +204,7 @@ impl ReplayStage {
#[allow(clippy::new_ret_no_self, clippy::too_many_arguments)] #[allow(clippy::new_ret_no_self, clippy::too_many_arguments)]
pub fn new( pub fn new(
keypair: Arc<Keypair>, my_id: Pubkey,
vote_signer_proxy: Option<Arc<VoteSignerProxy>>, vote_signer_proxy: Option<Arc<VoteSignerProxy>>,
bank: Arc<Bank>, bank: Arc<Bank>,
cluster_info: Arc<RwLock<ClusterInfo>>, cluster_info: Arc<RwLock<ClusterInfo>>,
@ -221,7 +220,6 @@ impl ReplayStage {
let send = UdpSocket::bind("0.0.0.0:0").expect("bind"); let send = UdpSocket::bind("0.0.0.0:0").expect("bind");
let t_responder = responder("replay_stage", Arc::new(send), vote_blob_receiver); let t_responder = responder("replay_stage", Arc::new(send), vote_blob_receiver);
let keypair = Arc::new(keypair);
let t_replay = Builder::new() let t_replay = Builder::new()
.name("solana-replay-stage".to_string()) .name("solana-replay-stage".to_string())
.spawn(move || { .spawn(move || {
@ -236,7 +234,7 @@ impl ReplayStage {
let (leader_id, _) = bank let (leader_id, _) = bank
.get_current_leader() .get_current_leader()
.expect("Scheduled leader should be calculated by this point"); .expect("Scheduled leader should be calculated by this point");
if leader_id != last_leader_id && leader_id == keypair.pubkey() { if leader_id != last_leader_id && leader_id == my_id {
to_leader_sender to_leader_sender
.send(TvuReturnType::LeaderRotation( .send(TvuReturnType::LeaderRotation(
bank.tick_height(), bank.tick_height(),
@ -251,7 +249,7 @@ impl ReplayStage {
&bank, &bank,
&cluster_info, &cluster_info,
&window_receiver, &window_receiver,
&keypair, my_id,
vote_signer_proxy.as_ref(), vote_signer_proxy.as_ref(),
Some(&vote_blob_sender), Some(&vote_blob_sender),
&ledger_entry_sender, &ledger_entry_sender,
@ -383,7 +381,7 @@ mod test {
let (rotation_sender, rotation_receiver) = channel(); let (rotation_sender, rotation_receiver) = channel();
let exit = Arc::new(AtomicBool::new(false)); let exit = Arc::new(AtomicBool::new(false));
let (_replay_stage, ledger_writer_recv) = ReplayStage::new( let (_replay_stage, ledger_writer_recv) = ReplayStage::new(
my_keypair, my_keypair.pubkey(),
Some(Arc::new(vote_signer_proxy)), Some(Arc::new(vote_signer_proxy)),
Arc::new(bank), Arc::new(bank),
Arc::new(RwLock::new(cluster_info_me)), Arc::new(RwLock::new(cluster_info_me)),
@ -479,7 +477,7 @@ mod test {
let vote_signer_proxy = Arc::new(VoteSignerProxy::new_local(&my_keypair)); let vote_signer_proxy = Arc::new(VoteSignerProxy::new_local(&my_keypair));
let (to_leader_sender, _) = channel(); let (to_leader_sender, _) = channel();
let (replay_stage, ledger_writer_recv) = ReplayStage::new( let (replay_stage, ledger_writer_recv) = ReplayStage::new(
my_keypair.clone(), my_keypair.pubkey(),
Some(vote_signer_proxy.clone()), Some(vote_signer_proxy.clone()),
bank.clone(), bank.clone(),
cluster_info_me.clone(), cluster_info_me.clone(),
@ -587,7 +585,7 @@ mod test {
let (rotation_tx, rotation_rx) = channel(); let (rotation_tx, rotation_rx) = channel();
let exit = Arc::new(AtomicBool::new(false)); let exit = Arc::new(AtomicBool::new(false));
let (_replay_stage, ledger_writer_recv) = ReplayStage::new( let (_replay_stage, ledger_writer_recv) = ReplayStage::new(
my_keypair.clone(), my_keypair.pubkey(),
Some(vote_signer_proxy.clone()), Some(vote_signer_proxy.clone()),
bank.clone(), bank.clone(),
cluster_info_me.clone(), cluster_info_me.clone(),
@ -687,7 +685,7 @@ mod test {
&Arc::new(Bank::default()), &Arc::new(Bank::default()),
&cluster_info_me, &cluster_info_me,
&entry_receiver, &entry_receiver,
&my_keypair, my_id,
Some(&vote_signer_proxy), Some(&vote_signer_proxy),
None, None,
&ledger_entry_sender, &ledger_entry_sender,
@ -714,7 +712,7 @@ mod test {
&Arc::new(Bank::default()), &Arc::new(Bank::default()),
&cluster_info_me, &cluster_info_me,
&entry_receiver, &entry_receiver,
&Arc::new(Keypair::new()), Keypair::new().pubkey(),
Some(&vote_signer_proxy), Some(&vote_signer_proxy),
None, None,
&ledger_entry_sender, &ledger_entry_sender,
@ -769,7 +767,7 @@ mod test {
&Arc::new(Bank::default()), &Arc::new(Bank::default()),
&cluster_info_me, &cluster_info_me,
&entry_receiver, &entry_receiver,
&my_keypair, my_id,
Some(&vote_signer_proxy), Some(&vote_signer_proxy),
None, None,
&ledger_entry_sender, &ledger_entry_sender,

View File

@ -23,7 +23,7 @@ use crate::service::Service;
use crate::storage_stage::{StorageStage, StorageState}; use crate::storage_stage::{StorageStage, StorageState};
use crate::vote_signer_proxy::VoteSignerProxy; use crate::vote_signer_proxy::VoteSignerProxy;
use solana_sdk::hash::Hash; use solana_sdk::hash::Hash;
use solana_sdk::signature::Keypair; use solana_sdk::signature::{Keypair, KeypairUtil};
use std::net::UdpSocket; use std::net::UdpSocket;
use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::{Arc, RwLock}; use std::sync::{Arc, RwLock};
@ -113,7 +113,7 @@ impl Tvu {
let l_last_entry_id = Arc::new(RwLock::new(last_entry_id)); let l_last_entry_id = Arc::new(RwLock::new(last_entry_id));
let (replay_stage, ledger_entry_receiver) = ReplayStage::new( let (replay_stage, ledger_entry_receiver) = ReplayStage::new(
keypair.clone(), keypair.pubkey(),
vote_signer, vote_signer,
bank.clone(), bank.clone(),
cluster_info.clone(), cluster_info.clone(),