Adds snapshot_utils::purge_bank_snapshot() (#31500)
Co-authored-by: Andrew Fitzgerald <apfitzge@gmail.com>
This commit is contained in:
parent
c7d922f229
commit
39a092c3dc
|
@ -2934,35 +2934,36 @@ pub fn verify_snapshot_archive(
|
|||
assert!(!dir_diff::is_different(&storages_to_verify, unpack_account_dir).unwrap());
|
||||
}
|
||||
|
||||
/// Remove outdated bank snapshots
|
||||
/// Purges bank snapshots, retaining the newest `num_bank_snapshots_to_retain`
|
||||
pub fn purge_old_bank_snapshots(
|
||||
bank_snapshots_dir: impl AsRef<Path>,
|
||||
num_bank_snapshots_to_retain: usize,
|
||||
filter_by_type: Option<BankSnapshotType>,
|
||||
) {
|
||||
let do_purge = |mut bank_snapshots: Vec<BankSnapshotInfo>| {
|
||||
bank_snapshots.sort_unstable();
|
||||
bank_snapshots
|
||||
.into_iter()
|
||||
.rev()
|
||||
.skip(num_bank_snapshots_to_retain)
|
||||
.for_each(|bank_snapshot| {
|
||||
let r = purge_bank_snapshot(&bank_snapshot.snapshot_dir);
|
||||
if r.is_err() {
|
||||
warn!(
|
||||
"Couldn't purge bank snapshot at: {}",
|
||||
bank_snapshot.snapshot_dir.display()
|
||||
);
|
||||
}
|
||||
})
|
||||
};
|
||||
|
||||
let bank_snapshots = match filter_by_type {
|
||||
let mut bank_snapshots = match filter_by_type {
|
||||
Some(BankSnapshotType::Pre) => get_bank_snapshots_pre(&bank_snapshots_dir),
|
||||
Some(BankSnapshotType::Post) => get_bank_snapshots_post(&bank_snapshots_dir),
|
||||
None => get_bank_snapshots(&bank_snapshots_dir),
|
||||
};
|
||||
do_purge(bank_snapshots);
|
||||
|
||||
bank_snapshots.sort_unstable();
|
||||
purge_bank_snapshots(
|
||||
bank_snapshots
|
||||
.iter()
|
||||
.rev()
|
||||
.skip(num_bank_snapshots_to_retain),
|
||||
);
|
||||
}
|
||||
|
||||
/// Purges all `bank_snapshots`
|
||||
///
|
||||
/// Does not exit early if there is an error while purging a bank snapshot.
|
||||
fn purge_bank_snapshots<'a>(bank_snapshots: impl IntoIterator<Item = &'a BankSnapshotInfo>) {
|
||||
for snapshot_dir in bank_snapshots.into_iter().map(|s| &s.snapshot_dir) {
|
||||
if purge_bank_snapshot(snapshot_dir).is_err() {
|
||||
warn!("Failed to purge bank snapshot: {}", snapshot_dir.display());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Remove the bank snapshot at this path
|
||||
|
|
Loading…
Reference in New Issue