Use standard tmp-snapshot- file prefix for the "new_state" archive for better cleanup/consistency
This commit is contained in:
		| @@ -38,7 +38,7 @@ pub const MAX_SNAPSHOTS: usize = 8; // Save some snapshots but not too many | |||||||
| const MAX_SNAPSHOT_DATA_FILE_SIZE: u64 = 32 * 1024 * 1024 * 1024; // 32 GiB | const MAX_SNAPSHOT_DATA_FILE_SIZE: u64 = 32 * 1024 * 1024 * 1024; // 32 GiB | ||||||
| const VERSION_STRING_V1_2_0: &str = "1.2.0"; | const VERSION_STRING_V1_2_0: &str = "1.2.0"; | ||||||
| const DEFAULT_SNAPSHOT_VERSION: SnapshotVersion = SnapshotVersion::V1_2_0; | const DEFAULT_SNAPSHOT_VERSION: SnapshotVersion = SnapshotVersion::V1_2_0; | ||||||
| const TMP_SNAPSHOT_DIR_PREFIX: &str = "tmp-snapshot-"; | const TMP_SNAPSHOT_PREFIX: &str = "tmp-snapshot-"; | ||||||
|  |  | ||||||
| #[derive(Copy, Clone, Eq, PartialEq, Debug)] | #[derive(Copy, Clone, Eq, PartialEq, Debug)] | ||||||
| pub enum SnapshotVersion { | pub enum SnapshotVersion { | ||||||
| @@ -147,7 +147,7 @@ pub fn package_snapshot<P: AsRef<Path>, Q: AsRef<Path>>( | |||||||
| ) -> Result<AccountsPackage> { | ) -> Result<AccountsPackage> { | ||||||
|     // Hard link all the snapshots we need for this package |     // Hard link all the snapshots we need for this package | ||||||
|     let snapshot_tmpdir = tempfile::Builder::new() |     let snapshot_tmpdir = tempfile::Builder::new() | ||||||
|         .prefix(&format!("{}{}-", TMP_SNAPSHOT_DIR_PREFIX, bank.slot())) |         .prefix(&format!("{}{}-", TMP_SNAPSHOT_PREFIX, bank.slot())) | ||||||
|         .tempdir_in(snapshot_path)?; |         .tempdir_in(snapshot_path)?; | ||||||
|  |  | ||||||
|     // Create a snapshot package |     // Create a snapshot package | ||||||
| @@ -208,9 +208,14 @@ pub fn remove_tmp_snapshot_archives(snapshot_path: &Path) { | |||||||
|                 .file_name() |                 .file_name() | ||||||
|                 .into_string() |                 .into_string() | ||||||
|                 .unwrap_or_else(|_| String::new()) |                 .unwrap_or_else(|_| String::new()) | ||||||
|                 .starts_with(TMP_SNAPSHOT_DIR_PREFIX) |                 .starts_with(TMP_SNAPSHOT_PREFIX) | ||||||
|             { |             { | ||||||
|                 fs::remove_dir_all(entry.path()).unwrap_or_else(|err| { |                 if entry.path().is_file() { | ||||||
|  |                     fs::remove_file(entry.path()) | ||||||
|  |                 } else { | ||||||
|  |                     fs::remove_dir_all(entry.path()) | ||||||
|  |                 } | ||||||
|  |                 .unwrap_or_else(|err| { | ||||||
|                     warn!("Failed to remove {}: {}", entry.path().display(), err) |                     warn!("Failed to remove {}: {}", entry.path().display(), err) | ||||||
|                 }); |                 }); | ||||||
|             } |             } | ||||||
| @@ -245,7 +250,7 @@ pub fn archive_snapshot_package(snapshot_package: &AccountsPackage) -> Result<() | |||||||
|     let staging_dir = tempfile::Builder::new() |     let staging_dir = tempfile::Builder::new() | ||||||
|         .prefix(&format!( |         .prefix(&format!( | ||||||
|             "{}{}-", |             "{}{}-", | ||||||
|             TMP_SNAPSHOT_DIR_PREFIX, snapshot_package.slot |             TMP_SNAPSHOT_PREFIX, snapshot_package.slot | ||||||
|         )) |         )) | ||||||
|         .tempdir_in(tar_dir)?; |         .tempdir_in(tar_dir)?; | ||||||
|  |  | ||||||
| @@ -291,7 +296,10 @@ pub fn archive_snapshot_package(snapshot_package: &AccountsPackage) -> Result<() | |||||||
|     // Tar the staging directory into the archive at `archive_path` |     // Tar the staging directory into the archive at `archive_path` | ||||||
|     // |     // | ||||||
|     // system `tar` program is used for -S (sparse file support) |     // system `tar` program is used for -S (sparse file support) | ||||||
|     let archive_path = tar_dir.join(format!("new_state{}", file_ext)); |     let archive_path = tar_dir.join(format!( | ||||||
|  |         "{}{}{}", | ||||||
|  |         TMP_SNAPSHOT_PREFIX, snapshot_package.slot, file_ext | ||||||
|  |     )); | ||||||
|  |  | ||||||
|     let mut tar = process::Command::new("tar") |     let mut tar = process::Command::new("tar") | ||||||
|         .args(&[ |         .args(&[ | ||||||
| @@ -586,7 +594,7 @@ pub fn bank_from_archive<P: AsRef<Path>>( | |||||||
| ) -> Result<Bank> { | ) -> Result<Bank> { | ||||||
|     // Untar the snapshot into a temporary directory |     // Untar the snapshot into a temporary directory | ||||||
|     let unpack_dir = tempfile::Builder::new() |     let unpack_dir = tempfile::Builder::new() | ||||||
|         .prefix(TMP_SNAPSHOT_DIR_PREFIX) |         .prefix(TMP_SNAPSHOT_PREFIX) | ||||||
|         .tempdir_in(snapshot_path)?; |         .tempdir_in(snapshot_path)?; | ||||||
|     untar_snapshot_in(&snapshot_tar, &unpack_dir, archive_format)?; |     untar_snapshot_in(&snapshot_tar, &unpack_dir, archive_format)?; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -220,6 +220,7 @@ fn main() { | |||||||
|             exit(1); |             exit(1); | ||||||
|         }) |         }) | ||||||
|     } |     } | ||||||
|  |     solana_runtime::snapshot_utils::remove_tmp_snapshot_archives(&ledger_path); | ||||||
|  |  | ||||||
|     let validator_log_symlink = ledger_path.join("validator.log"); |     let validator_log_symlink = ledger_path.join("validator.log"); | ||||||
|     let logfile = if output != Output::Log { |     let logfile = if output != Output::Log { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user