automerge
This commit is contained in:
		@@ -142,6 +142,7 @@ pub fn process_blocktree(
 | 
			
		||||
    genesis_block: &GenesisBlock,
 | 
			
		||||
    blocktree: &Blocktree,
 | 
			
		||||
    account_paths: Option<String>,
 | 
			
		||||
    verify_ledger: bool,
 | 
			
		||||
) -> result::Result<(BankForks, Vec<BankForksInfo>, LeaderScheduleCache), BlocktreeProcessorError> {
 | 
			
		||||
    let now = Instant::now();
 | 
			
		||||
    info!("processing ledger...");
 | 
			
		||||
@@ -204,7 +205,7 @@ pub fn process_blocktree(
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if !entries.is_empty() {
 | 
			
		||||
            if !entries.verify(&last_entry_hash) {
 | 
			
		||||
            if verify_ledger && !entries.verify(&last_entry_hash) {
 | 
			
		||||
                warn!(
 | 
			
		||||
                    "Ledger proof of history failed at slot: {}, entry: {}",
 | 
			
		||||
                    slot, entry_height
 | 
			
		||||
@@ -373,7 +374,7 @@ pub mod tests {
 | 
			
		||||
        fill_blocktree_slot_with_ticks(&blocktree, ticks_per_slot, 2, 1, blockhash);
 | 
			
		||||
 | 
			
		||||
        let (mut _bank_forks, bank_forks_info, _) =
 | 
			
		||||
            process_blocktree(&genesis_block, &blocktree, None).unwrap();
 | 
			
		||||
            process_blocktree(&genesis_block, &blocktree, None, true).unwrap();
 | 
			
		||||
 | 
			
		||||
        assert_eq!(bank_forks_info.len(), 1);
 | 
			
		||||
        assert_eq!(
 | 
			
		||||
@@ -432,7 +433,7 @@ pub mod tests {
 | 
			
		||||
        blocktree.set_roots(&[4, 1, 0]).unwrap();
 | 
			
		||||
 | 
			
		||||
        let (bank_forks, bank_forks_info, _) =
 | 
			
		||||
            process_blocktree(&genesis_block, &blocktree, None).unwrap();
 | 
			
		||||
            process_blocktree(&genesis_block, &blocktree, None, true).unwrap();
 | 
			
		||||
 | 
			
		||||
        assert_eq!(bank_forks_info.len(), 1); // One fork, other one is ignored b/c not a descendant of the root
 | 
			
		||||
 | 
			
		||||
@@ -506,7 +507,7 @@ pub mod tests {
 | 
			
		||||
        blocktree.set_roots(&[0, 1]).unwrap();
 | 
			
		||||
 | 
			
		||||
        let (bank_forks, bank_forks_info, _) =
 | 
			
		||||
            process_blocktree(&genesis_block, &blocktree, None).unwrap();
 | 
			
		||||
            process_blocktree(&genesis_block, &blocktree, None, true).unwrap();
 | 
			
		||||
 | 
			
		||||
        assert_eq!(bank_forks_info.len(), 2); // There are two forks
 | 
			
		||||
        assert_eq!(
 | 
			
		||||
@@ -587,7 +588,7 @@ pub mod tests {
 | 
			
		||||
 | 
			
		||||
        // Check that we can properly restart the ledger / leader scheduler doesn't fail
 | 
			
		||||
        let (bank_forks, bank_forks_info, _) =
 | 
			
		||||
            process_blocktree(&genesis_block, &blocktree, None).unwrap();
 | 
			
		||||
            process_blocktree(&genesis_block, &blocktree, None, true).unwrap();
 | 
			
		||||
 | 
			
		||||
        assert_eq!(bank_forks_info.len(), 1); // There is one fork
 | 
			
		||||
        assert_eq!(
 | 
			
		||||
@@ -723,7 +724,7 @@ pub mod tests {
 | 
			
		||||
            .unwrap();
 | 
			
		||||
        let entry_height = genesis_block.ticks_per_slot + entries.len() as u64;
 | 
			
		||||
        let (bank_forks, bank_forks_info, _) =
 | 
			
		||||
            process_blocktree(&genesis_block, &blocktree, None).unwrap();
 | 
			
		||||
            process_blocktree(&genesis_block, &blocktree, None, true).unwrap();
 | 
			
		||||
 | 
			
		||||
        assert_eq!(bank_forks_info.len(), 1);
 | 
			
		||||
        assert_eq!(bank_forks.root(), 0);
 | 
			
		||||
@@ -754,7 +755,7 @@ pub mod tests {
 | 
			
		||||
 | 
			
		||||
        let blocktree = Blocktree::open(&ledger_path).unwrap();
 | 
			
		||||
        let (bank_forks, bank_forks_info, _) =
 | 
			
		||||
            process_blocktree(&genesis_block, &blocktree, None).unwrap();
 | 
			
		||||
            process_blocktree(&genesis_block, &blocktree, None, true).unwrap();
 | 
			
		||||
 | 
			
		||||
        assert_eq!(bank_forks_info.len(), 1);
 | 
			
		||||
        assert_eq!(
 | 
			
		||||
 
 | 
			
		||||
@@ -176,6 +176,7 @@ impl LocalCluster {
 | 
			
		||||
            &leader_voting_keypair,
 | 
			
		||||
            &leader_storage_keypair,
 | 
			
		||||
            None,
 | 
			
		||||
            true,
 | 
			
		||||
            &config.validator_configs[0],
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
@@ -308,6 +309,7 @@ impl LocalCluster {
 | 
			
		||||
            &voting_keypair,
 | 
			
		||||
            &storage_keypair,
 | 
			
		||||
            Some(&self.entry_point_info),
 | 
			
		||||
            true,
 | 
			
		||||
            &validator_config,
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
@@ -561,6 +563,7 @@ impl Cluster for LocalCluster {
 | 
			
		||||
            &fullnode_info.voting_keypair,
 | 
			
		||||
            &fullnode_info.storage_keypair,
 | 
			
		||||
            None,
 | 
			
		||||
            true,
 | 
			
		||||
            config,
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -84,6 +84,7 @@ impl Validator {
 | 
			
		||||
        voting_keypair: &Arc<Keypair>,
 | 
			
		||||
        storage_keypair: &Arc<Keypair>,
 | 
			
		||||
        entrypoint_info_option: Option<&ContactInfo>,
 | 
			
		||||
        verify_ledger: bool,
 | 
			
		||||
        config: &ValidatorConfig,
 | 
			
		||||
    ) -> Self {
 | 
			
		||||
        warn!("CUDA is {}abled", if cfg!(cuda) { "en" } else { "dis" });
 | 
			
		||||
@@ -104,6 +105,7 @@ impl Validator {
 | 
			
		||||
            ledger_path,
 | 
			
		||||
            config.account_paths.clone(),
 | 
			
		||||
            config.snapshot_path.clone(),
 | 
			
		||||
            verify_ledger,
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        let leader_schedule_cache = Arc::new(leader_schedule_cache);
 | 
			
		||||
@@ -301,6 +303,7 @@ fn get_bank_forks(
 | 
			
		||||
    blocktree: &Blocktree,
 | 
			
		||||
    account_paths: Option<String>,
 | 
			
		||||
    snapshot_path: Option<String>,
 | 
			
		||||
    verify_ledger: bool,
 | 
			
		||||
) -> (BankForks, Vec<BankForksInfo>, LeaderScheduleCache) {
 | 
			
		||||
    if snapshot_path.is_some() {
 | 
			
		||||
        let bank_forks =
 | 
			
		||||
@@ -318,8 +321,13 @@ fn get_bank_forks(
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    let (mut bank_forks, bank_forks_info, leader_schedule_cache) =
 | 
			
		||||
        blocktree_processor::process_blocktree(&genesis_block, &blocktree, account_paths)
 | 
			
		||||
            .expect("process_blocktree failed");
 | 
			
		||||
        blocktree_processor::process_blocktree(
 | 
			
		||||
            &genesis_block,
 | 
			
		||||
            &blocktree,
 | 
			
		||||
            account_paths,
 | 
			
		||||
            verify_ledger,
 | 
			
		||||
        )
 | 
			
		||||
        .expect("process_blocktree failed");
 | 
			
		||||
    if snapshot_path.is_some() {
 | 
			
		||||
        bank_forks.set_snapshot_config(snapshot_path);
 | 
			
		||||
        let _ = bank_forks.add_snapshot(0, 0);
 | 
			
		||||
@@ -331,6 +339,7 @@ pub fn new_banks_from_blocktree(
 | 
			
		||||
    blocktree_path: &str,
 | 
			
		||||
    account_paths: Option<String>,
 | 
			
		||||
    snapshot_path: Option<String>,
 | 
			
		||||
    verify_ledger: bool,
 | 
			
		||||
) -> (
 | 
			
		||||
    BankForks,
 | 
			
		||||
    Vec<BankForksInfo>,
 | 
			
		||||
@@ -347,8 +356,13 @@ pub fn new_banks_from_blocktree(
 | 
			
		||||
        Blocktree::open_with_signal(blocktree_path)
 | 
			
		||||
            .expect("Expected to successfully open database ledger");
 | 
			
		||||
 | 
			
		||||
    let (bank_forks, bank_forks_info, leader_schedule_cache) =
 | 
			
		||||
        get_bank_forks(&genesis_block, &blocktree, account_paths, snapshot_path);
 | 
			
		||||
    let (bank_forks, bank_forks_info, leader_schedule_cache) = get_bank_forks(
 | 
			
		||||
        &genesis_block,
 | 
			
		||||
        &blocktree,
 | 
			
		||||
        account_paths,
 | 
			
		||||
        snapshot_path,
 | 
			
		||||
        verify_ledger,
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    (
 | 
			
		||||
        bank_forks,
 | 
			
		||||
@@ -412,6 +426,7 @@ pub fn new_validator_for_tests() -> (Validator, ContactInfo, Keypair, String) {
 | 
			
		||||
        &voting_keypair,
 | 
			
		||||
        &storage_keypair,
 | 
			
		||||
        None,
 | 
			
		||||
        true,
 | 
			
		||||
        &ValidatorConfig::default(),
 | 
			
		||||
    );
 | 
			
		||||
    discover_cluster(&contact_info.gossip, 1).expect("Node startup failed");
 | 
			
		||||
@@ -447,6 +462,7 @@ mod tests {
 | 
			
		||||
            &voting_keypair,
 | 
			
		||||
            &storage_keypair,
 | 
			
		||||
            Some(&leader_node.info),
 | 
			
		||||
            true,
 | 
			
		||||
            &ValidatorConfig::default(),
 | 
			
		||||
        );
 | 
			
		||||
        validator.close().unwrap();
 | 
			
		||||
@@ -478,6 +494,7 @@ mod tests {
 | 
			
		||||
                    &voting_keypair,
 | 
			
		||||
                    &storage_keypair,
 | 
			
		||||
                    Some(&leader_node.info),
 | 
			
		||||
                    true,
 | 
			
		||||
                    &ValidatorConfig::default(),
 | 
			
		||||
                )
 | 
			
		||||
            })
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user