Reduce Fullnode public API surface

This commit is contained in:
Michael Vines 2019-02-06 19:47:55 -08:00 committed by Grimes
parent acc6bf1564
commit abb9a72b27
3 changed files with 42 additions and 51 deletions

View File

@ -101,7 +101,7 @@ pub struct Fullnode {
sigverify_disabled: bool, sigverify_disabled: bool,
tpu_sockets: Vec<UdpSocket>, tpu_sockets: Vec<UdpSocket>,
broadcast_socket: UdpSocket, broadcast_socket: UdpSocket,
pub node_services: NodeServices, node_services: NodeServices,
pub role_notifiers: (TvuRotationReceiver, TpuRotationReceiver), pub role_notifiers: (TvuRotationReceiver, TpuRotationReceiver),
blob_sender: BlobSender, blob_sender: BlobSender,
} }
@ -125,7 +125,7 @@ impl Fullnode {
db_ledger, db_ledger,
ledger_signal_sender, ledger_signal_sender,
ledger_signal_receiver, ledger_signal_receiver,
) = Self::new_bank_from_ledger(ledger_path, &config.leader_scheduler_config); ) = new_bank_from_ledger(ledger_path, &config.leader_scheduler_config);
info!("node info: {:?}", node.info); info!("node info: {:?}", node.info);
info!("node entrypoint_info: {:?}", entrypoint_info_option); info!("node entrypoint_info: {:?}", entrypoint_info_option);
@ -300,7 +300,7 @@ impl Fullnode {
} }
} }
pub fn leader_to_validator(&mut self, tick_height: u64) -> FullnodeReturnType { fn leader_to_validator(&mut self, tick_height: u64) -> FullnodeReturnType {
trace!( trace!(
"leader_to_validator({:?}): tick_height={}", "leader_to_validator({:?}): tick_height={}",
self.id, self.id,
@ -341,12 +341,7 @@ impl Fullnode {
} }
} }
pub fn validator_to_leader( fn validator_to_leader(&mut self, tick_height: u64, entry_height: u64, last_entry_id: Hash) {
&mut self,
tick_height: u64,
entry_height: u64,
last_entry_id: Hash,
) {
trace!( trace!(
"validator_to_leader({:?}): tick_height={} entry_height={} last_entry_id={}", "validator_to_leader({:?}): tick_height={} entry_height={} last_entry_id={}",
self.id, self.id,
@ -468,7 +463,7 @@ impl Fullnode {
} }
// Used for notifying many nodes in parallel to exit // Used for notifying many nodes in parallel to exit
pub fn exit(&self) { fn exit(&self) {
self.exit.store(true, Ordering::Relaxed); self.exit.store(true, Ordering::Relaxed);
if let Some(ref rpc_service) = self.rpc_service { if let Some(ref rpc_service) = self.rpc_service {
rpc_service.exit(); rpc_service.exit();
@ -483,39 +478,38 @@ impl Fullnode {
self.exit(); self.exit();
self.join() self.join()
} }
}
pub fn new_bank_from_ledger( pub fn new_bank_from_ledger(
ledger_path: &str, ledger_path: &str,
leader_scheduler_config: &LeaderSchedulerConfig, leader_scheduler_config: &LeaderSchedulerConfig,
) -> (Bank, u64, Hash, DbLedger, SyncSender<bool>, Receiver<bool>) { ) -> (Bank, u64, Hash, DbLedger, SyncSender<bool>, Receiver<bool>) {
let (db_ledger, ledger_signal_sender, ledger_signal_receiver) = let (db_ledger, ledger_signal_sender, ledger_signal_receiver) =
DbLedger::open_with_signal(ledger_path) DbLedger::open_with_signal(ledger_path)
.expect("Expected to successfully open database ledger"); .expect("Expected to successfully open database ledger");
let genesis_block = let genesis_block =
GenesisBlock::load(ledger_path).expect("Expected to successfully open genesis block"); GenesisBlock::load(ledger_path).expect("Expected to successfully open genesis block");
let mut bank = let mut bank = Bank::new_with_leader_scheduler_config(&genesis_block, leader_scheduler_config);
Bank::new_with_leader_scheduler_config(&genesis_block, leader_scheduler_config);
let now = Instant::now(); let now = Instant::now();
let entries = db_ledger.read_ledger().expect("opening ledger"); let entries = db_ledger.read_ledger().expect("opening ledger");
info!("processing ledger..."); info!("processing ledger...");
let (entry_height, last_entry_id) = bank.process_ledger(entries).expect("process_ledger"); let (entry_height, last_entry_id) = bank.process_ledger(entries).expect("process_ledger");
info!( info!(
"processed {} ledger entries in {}ms, tick_height={}...", "processed {} ledger entries in {}ms, tick_height={}...",
entry_height, entry_height,
duration_as_ms(&now.elapsed()), duration_as_ms(&now.elapsed()),
bank.tick_height() bank.tick_height()
); );
( (
bank, bank,
entry_height, entry_height,
last_entry_id, last_entry_id,
db_ledger, db_ledger,
ledger_signal_sender, ledger_signal_sender,
ledger_signal_receiver, ledger_signal_receiver,
) )
}
} }
impl Service for Fullnode { impl Service for Fullnode {
@ -835,10 +829,8 @@ mod tests {
// Close the validator so that rocksdb has locks available // Close the validator so that rocksdb has locks available
validator_exit(); validator_exit();
let (bank, entry_height, _, _, _, _) = Fullnode::new_bank_from_ledger( let (bank, entry_height, _, _, _, _) =
&validator_ledger_path, new_bank_from_ledger(&validator_ledger_path, &LeaderSchedulerConfig::default());
&LeaderSchedulerConfig::default(),
);
assert!( assert!(
bank.tick_height() bank.tick_height()

View File

@ -341,7 +341,7 @@ mod test {
use crate::db_ledger::{DbLedger, DEFAULT_SLOT_HEIGHT}; use crate::db_ledger::{DbLedger, DEFAULT_SLOT_HEIGHT};
use crate::entry::create_ticks; use crate::entry::create_ticks;
use crate::entry::Entry; use crate::entry::Entry;
use crate::fullnode::Fullnode; use crate::fullnode::new_bank_from_ledger;
use crate::genesis_block::GenesisBlock; use crate::genesis_block::GenesisBlock;
use crate::leader_scheduler::{make_active_set_entries, LeaderSchedulerConfig}; use crate::leader_scheduler::{make_active_set_entries, LeaderSchedulerConfig};
use crate::replay_stage::ReplayStage; use crate::replay_stage::ReplayStage;
@ -416,7 +416,7 @@ mod test {
{ {
// Set up the bank // Set up the bank
let (bank, _entry_height, last_entry_id, db_ledger, l_sender, l_receiver) = let (bank, _entry_height, last_entry_id, db_ledger, l_sender, l_receiver) =
Fullnode::new_bank_from_ledger(&my_ledger_path, &leader_scheduler_config); new_bank_from_ledger(&my_ledger_path, &leader_scheduler_config);
// Set up the replay stage // Set up the replay stage
let (rotation_sender, rotation_receiver) = channel(); let (rotation_sender, rotation_receiver) = channel();
@ -520,7 +520,7 @@ mod test {
let (to_leader_sender, _) = channel(); let (to_leader_sender, _) = channel();
{ {
let (bank, entry_height, last_entry_id, db_ledger, l_sender, l_receiver) = let (bank, entry_height, last_entry_id, db_ledger, l_sender, l_receiver) =
Fullnode::new_bank_from_ledger(&my_ledger_path, &LeaderSchedulerConfig::default()); new_bank_from_ledger(&my_ledger_path, &LeaderSchedulerConfig::default());
let bank = Arc::new(bank); let bank = Arc::new(bank);
let db_ledger = Arc::new(db_ledger); let db_ledger = Arc::new(db_ledger);
@ -629,7 +629,7 @@ mod test {
let exit = Arc::new(AtomicBool::new(false)); let exit = Arc::new(AtomicBool::new(false));
{ {
let (bank, _entry_height, last_entry_id, db_ledger, l_sender, l_receiver) = let (bank, _entry_height, last_entry_id, db_ledger, l_sender, l_receiver) =
Fullnode::new_bank_from_ledger(&my_ledger_path, &leader_scheduler_config); new_bank_from_ledger(&my_ledger_path, &leader_scheduler_config);
let meta = db_ledger let meta = db_ledger
.meta() .meta()

View File

@ -5,7 +5,7 @@ use solana::cluster_info::{ClusterInfo, Node, NodeInfo};
use solana::db_ledger::{create_tmp_sample_ledger, tmp_copy_ledger}; use solana::db_ledger::{create_tmp_sample_ledger, tmp_copy_ledger};
use solana::db_ledger::{DbLedger, DEFAULT_SLOT_HEIGHT}; use solana::db_ledger::{DbLedger, DEFAULT_SLOT_HEIGHT};
use solana::entry::{reconstruct_entries_from_blobs, Entry}; use solana::entry::{reconstruct_entries_from_blobs, Entry};
use solana::fullnode::{Fullnode, FullnodeConfig, FullnodeReturnType}; use solana::fullnode::{new_bank_from_ledger, Fullnode, FullnodeConfig, FullnodeReturnType};
use solana::gossip_service::GossipService; use solana::gossip_service::GossipService;
use solana::leader_scheduler::{make_active_set_entries, LeaderSchedulerConfig}; use solana::leader_scheduler::{make_active_set_entries, LeaderSchedulerConfig};
use solana::packet::SharedBlob; use solana::packet::SharedBlob;
@ -1018,8 +1018,7 @@ fn test_leader_to_validator_transition() {
leader_exit(); leader_exit();
info!("Check the ledger to make sure it's the right height..."); info!("Check the ledger to make sure it's the right height...");
let bank = let bank = new_bank_from_ledger(&leader_ledger_path, &LeaderSchedulerConfig::default()).0;
Fullnode::new_bank_from_ledger(&leader_ledger_path, &LeaderSchedulerConfig::default()).0;
assert_eq!( assert_eq!(
bank.tick_height(), bank.tick_height(),