Blow away snapshots directory on start (#5446)
This commit is contained in:
		@@ -10,6 +10,7 @@ use solana::socketaddr;
 | 
			
		||||
use solana::validator::{Validator, ValidatorConfig};
 | 
			
		||||
use solana_netutil::parse_port_range;
 | 
			
		||||
use solana_sdk::signature::{read_keypair, Keypair, KeypairUtil};
 | 
			
		||||
use std::fs;
 | 
			
		||||
use std::fs::File;
 | 
			
		||||
use std::net::SocketAddr;
 | 
			
		||||
use std::path::PathBuf;
 | 
			
		||||
@@ -156,20 +157,11 @@ fn main() {
 | 
			
		||||
                .validator(port_range_validator)
 | 
			
		||||
                .help("Range to use for dynamically assigned ports"),
 | 
			
		||||
        )
 | 
			
		||||
        .arg(
 | 
			
		||||
            clap::Arg::with_name("snapshot_path")
 | 
			
		||||
                .long("snapshot-path")
 | 
			
		||||
                .value_name("SNAPSHOT_PATHS")
 | 
			
		||||
                .takes_value(true)
 | 
			
		||||
                .requires("snapshot_interval_slots")
 | 
			
		||||
                .help("Snapshot path"),
 | 
			
		||||
        )
 | 
			
		||||
        .arg(
 | 
			
		||||
            clap::Arg::with_name("snapshot_interval_slots")
 | 
			
		||||
                .long("snapshot-interval-slots")
 | 
			
		||||
                .value_name("SNAPSHOT_INTERVAL_SLOTS")
 | 
			
		||||
                .takes_value(true)
 | 
			
		||||
                .requires("snapshot_path")
 | 
			
		||||
                .help("Number of slots between generating snapshots"),
 | 
			
		||||
        )
 | 
			
		||||
        .arg(
 | 
			
		||||
@@ -246,16 +238,22 @@ fn main() {
 | 
			
		||||
    if let Some(paths) = matches.value_of("accounts") {
 | 
			
		||||
        validator_config.account_paths = Some(paths.to_string());
 | 
			
		||||
    }
 | 
			
		||||
    if let Some(snapshot_path) = matches.value_of("snapshot_path").map(PathBuf::from) {
 | 
			
		||||
        let snapshot_interval = matches.value_of("snapshot_interval_slots").unwrap();
 | 
			
		||||
        validator_config.snapshot_config = Some(SnapshotConfig::new(
 | 
			
		||||
            snapshot_path,
 | 
			
		||||
            ledger_path.clone(),
 | 
			
		||||
            snapshot_interval.parse::<usize>().unwrap(),
 | 
			
		||||
        ));
 | 
			
		||||
    } else {
 | 
			
		||||
        validator_config.snapshot_config = None;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    validator_config.snapshot_config = matches.value_of("snapshot_interval_slots").map(|s| {
 | 
			
		||||
        let snapshots_dir = ledger_path.clone().join("snapshot");
 | 
			
		||||
        let snapshots_bank_state_dir = snapshots_dir.join("bank_states");
 | 
			
		||||
        let snapshots_tar_dir = snapshots_dir.join("tar");
 | 
			
		||||
        fs::create_dir_all(&snapshots_dir).expect("Failed to create snapshots directory");
 | 
			
		||||
        fs::create_dir_all(&snapshots_bank_state_dir)
 | 
			
		||||
            .expect("Failed to create snapshots bank state directory");
 | 
			
		||||
        fs::create_dir_all(&snapshots_tar_dir).expect("Failed  to create snapshots tar directory");
 | 
			
		||||
        SnapshotConfig::new(
 | 
			
		||||
            snapshots_bank_state_dir,
 | 
			
		||||
            snapshots_tar_dir,
 | 
			
		||||
            s.parse::<usize>().unwrap(),
 | 
			
		||||
        )
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    if matches.is_present("limit_ledger_size") {
 | 
			
		||||
        validator_config.max_ledger_slots = Some(DEFAULT_MAX_LEDGER_SLOTS);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user