Adds snapshot_utils::purge_bank_snapshot() (#31500)

Co-authored-by: Andrew Fitzgerald <apfitzge@gmail.com>
This commit is contained in:
Brooks 2023-05-05 14:01:08 -04:00 committed by GitHub
parent c7d922f229
commit 39a092c3dc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 21 additions and 20 deletions

View File

@ -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