Push BankForks into Fullnode::new()
This commit is contained in:
parent
a4411ef6a1
commit
0dde79f42b
|
@ -1,7 +1,8 @@
|
||||||
//! The `fullnode` module hosts all the fullnode microservices.
|
//! The `fullnode` module hosts all the fullnode microservices.
|
||||||
|
|
||||||
|
use crate::bank_forks::BankForks;
|
||||||
use crate::blocktree::{Blocktree, BlocktreeConfig};
|
use crate::blocktree::{Blocktree, BlocktreeConfig};
|
||||||
use crate::blocktree_processor;
|
use crate::blocktree_processor::{self, BankForksInfo};
|
||||||
use crate::cluster_info::{ClusterInfo, Node, NodeInfo};
|
use crate::cluster_info::{ClusterInfo, Node, NodeInfo};
|
||||||
use crate::gossip_service::GossipService;
|
use crate::gossip_service::GossipService;
|
||||||
use crate::leader_scheduler::{LeaderScheduler, LeaderSchedulerConfig};
|
use crate::leader_scheduler::{LeaderScheduler, LeaderSchedulerConfig};
|
||||||
|
@ -126,8 +127,18 @@ impl Fullnode {
|
||||||
let leader_scheduler = Arc::new(RwLock::new(LeaderScheduler::new(
|
let leader_scheduler = Arc::new(RwLock::new(LeaderScheduler::new(
|
||||||
&config.leader_scheduler_config,
|
&config.leader_scheduler_config,
|
||||||
)));
|
)));
|
||||||
let (bank, entry_height, last_entry_id, blocktree, ledger_signal_receiver) =
|
let (mut bank_forks, bank_forks_info, blocktree, ledger_signal_receiver) =
|
||||||
new_bank_from_ledger(ledger_path, &config.ledger_config(), &leader_scheduler);
|
new_banks_from_blocktree(ledger_path, &config.ledger_config(), &leader_scheduler);
|
||||||
|
|
||||||
|
if bank_forks_info.len() != 1 {
|
||||||
|
warn!("TODO: figure out what to do with multiple bank forks");
|
||||||
|
}
|
||||||
|
bank_forks.set_working_bank_id(bank_forks_info[0].bank_id);
|
||||||
|
let (bank, entry_height, last_entry_id) = (
|
||||||
|
bank_forks.working_bank(),
|
||||||
|
bank_forks_info[0].entry_height,
|
||||||
|
bank_forks_info[0].last_entry_id,
|
||||||
|
);
|
||||||
|
|
||||||
info!("node info: {:?}", node.info);
|
info!("node info: {:?}", node.info);
|
||||||
info!("node entrypoint_info: {:?}", entrypoint_info_option);
|
info!("node entrypoint_info: {:?}", entrypoint_info_option);
|
||||||
|
@ -453,38 +464,44 @@ fn new_banks_from_blocktree(
|
||||||
blocktree_path: &str,
|
blocktree_path: &str,
|
||||||
blocktree_config: &BlocktreeConfig,
|
blocktree_config: &BlocktreeConfig,
|
||||||
leader_scheduler: &Arc<RwLock<LeaderScheduler>>,
|
leader_scheduler: &Arc<RwLock<LeaderScheduler>>,
|
||||||
) -> (Arc<Bank>, u64, Hash, Blocktree, Receiver<bool>) {
|
) -> (BankForks, Vec<BankForksInfo>, Blocktree, Receiver<bool>) {
|
||||||
let (blocktree, ledger_signal_receiver) =
|
let (blocktree, ledger_signal_receiver) =
|
||||||
Blocktree::open_with_config_signal(blocktree_path, blocktree_config)
|
Blocktree::open_with_config_signal(blocktree_path, blocktree_config)
|
||||||
.expect("Expected to successfully open database ledger");
|
.expect("Expected to successfully open database ledger");
|
||||||
let genesis_block =
|
let genesis_block =
|
||||||
GenesisBlock::load(blocktree_path).expect("Expected to successfully open genesis block");
|
GenesisBlock::load(blocktree_path).expect("Expected to successfully open genesis block");
|
||||||
|
|
||||||
let (mut bank_forks, bank_forks_info) =
|
let (bank_forks, bank_forks_info) =
|
||||||
blocktree_processor::process_blocktree(&genesis_block, &blocktree, leader_scheduler)
|
blocktree_processor::process_blocktree(&genesis_block, &blocktree, leader_scheduler)
|
||||||
.expect("process_blocktree failed");
|
.expect("process_blocktree failed");
|
||||||
|
|
||||||
if bank_forks_info.len() != 1 {
|
|
||||||
warn!("TODO: figure out what to do with multiple bank forks");
|
|
||||||
}
|
|
||||||
bank_forks.set_working_bank_id(bank_forks_info[0].bank_id);
|
|
||||||
(
|
(
|
||||||
bank_forks.working_bank(),
|
bank_forks,
|
||||||
bank_forks_info[0].entry_height,
|
bank_forks_info,
|
||||||
bank_forks_info[0].last_entry_id,
|
|
||||||
blocktree,
|
blocktree,
|
||||||
ledger_signal_receiver,
|
ledger_signal_receiver,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Remove this function from tests
|
||||||
#[allow(clippy::trivially_copy_pass_by_ref)]
|
#[allow(clippy::trivially_copy_pass_by_ref)]
|
||||||
pub fn new_bank_from_ledger(
|
pub fn new_bank_from_ledger(
|
||||||
ledger_path: &str,
|
ledger_path: &str,
|
||||||
ledger_config: &BlocktreeConfig,
|
ledger_config: &BlocktreeConfig,
|
||||||
leader_scheduler: &Arc<RwLock<LeaderScheduler>>,
|
leader_scheduler: &Arc<RwLock<LeaderScheduler>>,
|
||||||
) -> (Arc<Bank>, u64, Hash, Blocktree, Receiver<bool>) {
|
) -> (Arc<Bank>, u64, Hash, Blocktree, Receiver<bool>) {
|
||||||
let (working_bank, entry_height, last_entry_id, blocktree, ledger_signal_receiver) =
|
let (mut bank_forks, bank_forks_info, blocktree, ledger_signal_receiver) =
|
||||||
new_banks_from_blocktree(ledger_path, ledger_config, leader_scheduler);
|
new_banks_from_blocktree(ledger_path, ledger_config, leader_scheduler);
|
||||||
|
|
||||||
|
// This helper won't handle multiple banks
|
||||||
|
assert_eq!(bank_forks_info.len(), 1);
|
||||||
|
bank_forks.set_working_bank_id(bank_forks_info[0].bank_id);
|
||||||
|
let (working_bank, entry_height, last_entry_id) = (
|
||||||
|
bank_forks.working_bank(),
|
||||||
|
bank_forks_info[0].entry_height,
|
||||||
|
bank_forks_info[0].last_entry_id,
|
||||||
|
);
|
||||||
|
|
||||||
(
|
(
|
||||||
working_bank,
|
working_bank,
|
||||||
entry_height,
|
entry_height,
|
||||||
|
|
Loading…
Reference in New Issue