Add Storage accounts for all nodes (#4298)

* Setup storage keypairs for all nodes

* Clean up naming

* clippy

* Update arg value_names
This commit is contained in:
Sagar Dhawan
2019-05-15 15:19:29 -07:00
committed by GitHub
parent 915956b94b
commit fd3f2cb910
9 changed files with 87 additions and 38 deletions

View File

@ -76,7 +76,8 @@ impl Fullnode {
keypair: &Arc<Keypair>,
ledger_path: &str,
vote_account: &Pubkey,
voting_keypair: T,
voting_keypair: &Arc<T>,
storage_keypair: &Arc<Keypair>,
entrypoint_info_option: Option<&ContactInfo>,
config: &FullnodeConfig,
) -> Self
@ -219,12 +220,13 @@ impl Fullnode {
let voting_keypair = if config.voting_disabled {
None
} else {
Some(Arc::new(voting_keypair))
Some(voting_keypair)
};
let tvu = Tvu::new(
vote_account,
voting_keypair,
storage_keypair,
&bank_forks,
&cluster_info,
sockets,
@ -355,13 +357,15 @@ pub fn new_fullnode_for_tests() -> (Fullnode, ContactInfo, Keypair, String) {
let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);
let voting_keypair = Keypair::new();
let voting_keypair = Arc::new(Keypair::new());
let storage_keypair = Arc::new(Keypair::new());
let node = Fullnode::new(
node,
&node_keypair,
&ledger_path,
&voting_keypair.pubkey(),
voting_keypair,
&voting_keypair,
&storage_keypair,
None,
&FullnodeConfig::default(),
);
@ -387,13 +391,15 @@ mod tests {
create_genesis_block_with_leader(10_000, &leader_keypair.pubkey(), 1000).0;
let (validator_ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);
let voting_keypair = Keypair::new();
let voting_keypair = Arc::new(Keypair::new());
let storage_keypair = Arc::new(Keypair::new());
let validator = Fullnode::new(
validator_node,
&Arc::new(validator_keypair),
&validator_ledger_path,
&voting_keypair.pubkey(),
voting_keypair,
&voting_keypair,
&storage_keypair,
Some(&leader_node.info),
&FullnodeConfig::default(),
);
@ -415,13 +421,15 @@ mod tests {
create_genesis_block_with_leader(10_000, &leader_keypair.pubkey(), 1000);
let (validator_ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);
ledger_paths.push(validator_ledger_path.clone());
let voting_keypair = Keypair::new();
let voting_keypair = Arc::new(Keypair::new());
let storage_keypair = Arc::new(Keypair::new());
Fullnode::new(
validator_node,
&Arc::new(validator_keypair),
&validator_ledger_path,
&voting_keypair.pubkey(),
voting_keypair,
&voting_keypair,
&storage_keypair,
Some(&leader_node.info),
&FullnodeConfig::default(),
)

View File

@ -27,18 +27,11 @@ use std::sync::Arc;
pub struct FullnodeInfo {
pub keypair: Arc<Keypair>,
pub voting_keypair: Arc<Keypair>,
pub storage_keypair: Arc<Keypair>,
pub ledger_path: String,
}
impl FullnodeInfo {
fn new(keypair: Arc<Keypair>, ledger_path: String) -> Self {
Self {
keypair,
ledger_path,
}
}
}
pub struct ReplicatorInfo {
pub replicator_storage_id: Pubkey,
pub ledger_path: String,
@ -134,13 +127,15 @@ impl LocalCluster {
let (genesis_ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_block);
let leader_ledger_path = tmp_copy_blocktree!(&genesis_ledger_path);
let leader_contact_info = leader_node.info.clone();
let leader_storage_keypair = Arc::new(Keypair::new());
let leader_voting_keypair = Arc::new(voting_keypair);
let leader_server = Fullnode::new(
leader_node,
&leader_keypair,
&leader_ledger_path,
&voting_keypair.pubkey(),
voting_keypair,
&leader_voting_keypair.pubkey(),
&leader_voting_keypair,
&leader_storage_keypair,
None,
&config.fullnode_config,
);
@ -150,7 +145,12 @@ impl LocalCluster {
fullnodes.insert(leader_pubkey, leader_server);
fullnode_infos.insert(
leader_pubkey,
FullnodeInfo::new(leader_keypair.clone(), leader_ledger_path),
FullnodeInfo {
keypair: leader_keypair,
voting_keypair: leader_voting_keypair,
storage_keypair: leader_storage_keypair,
ledger_path: leader_ledger_path,
},
);
let mut cluster = Self {
@ -221,6 +221,7 @@ impl LocalCluster {
// Must have enough tokens to fund vote account and set delegate
let validator_keypair = Arc::new(Keypair::new());
let voting_keypair = Keypair::new();
let storage_keypair = Arc::new(Keypair::new());
let validator_pubkey = validator_keypair.pubkey();
let validator_node = Node::new_localhost_with_pubkey(&validator_keypair.pubkey());
let ledger_path = tmp_copy_blocktree!(&self.genesis_ledger_path);
@ -250,12 +251,14 @@ impl LocalCluster {
.unwrap();
}
let voting_keypair = Arc::new(voting_keypair);
let validator_server = Fullnode::new(
validator_node,
&validator_keypair,
&ledger_path,
&voting_keypair.pubkey(),
voting_keypair,
&voting_keypair,
&storage_keypair,
Some(&self.entry_point_info),
&fullnode_config,
);
@ -265,12 +268,22 @@ impl LocalCluster {
if fullnode_config.voting_disabled {
self.listener_infos.insert(
validator_keypair.pubkey(),
FullnodeInfo::new(validator_keypair.clone(), ledger_path),
FullnodeInfo {
keypair: validator_keypair,
voting_keypair,
storage_keypair,
ledger_path,
},
);
} else {
self.fullnode_infos.insert(
validator_keypair.pubkey(),
FullnodeInfo::new(validator_keypair.clone(), ledger_path),
FullnodeInfo {
keypair: validator_keypair,
voting_keypair,
storage_keypair,
ledger_path,
},
);
}
}
@ -467,13 +480,13 @@ impl Cluster for LocalCluster {
if pubkey == self.entry_point_info.id {
self.entry_point_info = node.info.clone();
}
let new_voting_keypair = Keypair::new();
let restarted_node = Fullnode::new(
node,
&fullnode_info.keypair,
&fullnode_info.ledger_path,
&new_voting_keypair.pubkey(),
new_voting_keypair,
&fullnode_info.voting_keypair.pubkey(),
&fullnode_info.voting_keypair,
&fullnode_info.storage_keypair,
None,
&self.fullnode_config,
);

View File

@ -74,7 +74,7 @@ impl ReplayStage {
pub fn new<T>(
my_id: &Pubkey,
vote_account: &Pubkey,
voting_keypair: Option<Arc<T>>,
voting_keypair: Option<&Arc<T>>,
blocktree: Arc<Blocktree>,
bank_forks: &Arc<RwLock<BankForks>>,
cluster_info: Arc<RwLock<ClusterInfo>>,
@ -105,6 +105,7 @@ impl ReplayStage {
}
// Start the replay stage loop
let leader_schedule_cache = leader_schedule_cache.clone();
let voting_keypair = voting_keypair.cloned();
let t_replay = Builder::new()
.name("solana-replay-stage".to_string())
.spawn(move || {

View File

@ -57,7 +57,8 @@ impl Tvu {
#[allow(clippy::new_ret_no_self, clippy::too_many_arguments)]
pub fn new<T>(
vote_account: &Pubkey,
voting_keypair: Option<Arc<T>>,
voting_keypair: Option<&Arc<T>>,
storage_keypair: &Arc<Keypair>,
bank_forks: &Arc<RwLock<BankForks>>,
cluster_info: &Arc<RwLock<ClusterInfo>>,
sockets: Sockets,
@ -139,13 +140,12 @@ impl Tvu {
None
};
let storage_keypair = Arc::new(Keypair::new());
let storage_stage = StorageStage::new(
storage_state,
root_slot_receiver,
Some(blocktree),
&keypair,
&storage_keypair,
storage_keypair,
&exit,
&bank_forks,
storage_rotate_count,
@ -214,10 +214,12 @@ pub mod tests {
let (exit, poh_recorder, poh_service, _entry_receiver) =
create_test_recorder(&bank, &blocktree);
let voting_keypair = Keypair::new();
let storage_keypair = Arc::new(Keypair::new());
let leader_schedule_cache = Arc::new(LeaderScheduleCache::new_from_bank(&bank));
let tvu = Tvu::new(
&voting_keypair.pubkey(),
Some(Arc::new(voting_keypair)),
Some(&Arc::new(voting_keypair)),
&storage_keypair,
&Arc::new(RwLock::new(bank_forks)),
&cref1,
{