Use standard tmp-snapshot- file prefix for the "new_state" archive for better cleanup/consistency
This commit is contained in:
parent
b0e6e29527
commit
4a66e3eddc
|
@ -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 {
|
||||||
|
|
Loading…
Reference in New Issue