Fix flaky test test_concurrent_snapshot_packaging (#15252)
This commit is contained in:
@ -303,7 +303,6 @@ mod tests {
|
|||||||
let mut snapshot_test_config = SnapshotTestConfig::new(snapshot_version, cluster_type, 1);
|
let mut snapshot_test_config = SnapshotTestConfig::new(snapshot_version, cluster_type, 1);
|
||||||
|
|
||||||
let bank_forks = &mut snapshot_test_config.bank_forks;
|
let bank_forks = &mut snapshot_test_config.bank_forks;
|
||||||
let accounts_dir = &snapshot_test_config.accounts_dir;
|
|
||||||
let snapshots_dir = &snapshot_test_config.snapshot_dir;
|
let snapshots_dir = &snapshot_test_config.snapshot_dir;
|
||||||
let snapshot_config = &snapshot_test_config.snapshot_config;
|
let snapshot_config = &snapshot_test_config.snapshot_config;
|
||||||
let snapshot_path = &snapshot_config.snapshot_path;
|
let snapshot_path = &snapshot_config.snapshot_path;
|
||||||
@ -370,8 +369,27 @@ mod tests {
|
|||||||
|
|
||||||
bank_forks.insert(bank);
|
bank_forks.insert(bank);
|
||||||
if slot == saved_slot as u64 {
|
if slot == saved_slot as u64 {
|
||||||
let options = CopyOptions::new();
|
// Find the relevant snapshot storages
|
||||||
fs_extra::dir::copy(accounts_dir, &saved_accounts_dir, &options).unwrap();
|
let snapshot_storage_files: HashSet<_> = bank_forks[slot]
|
||||||
|
.get_snapshot_storages()
|
||||||
|
.into_iter()
|
||||||
|
.flatten()
|
||||||
|
.map(|s| s.get_path())
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
// Only save off the files returned by `get_snapshot_storages`. This is because
|
||||||
|
// some of the storage entries in the accounts directory may be filtered out by
|
||||||
|
// `get_snapshot_storages()` and will not be included in the snapshot. Ultimately,
|
||||||
|
// this means copying naitvely everything in `accounts_dir` to the `saved_accounts_dir`
|
||||||
|
// will lead to test failure by mismatch when `saved_accounts_dir` is compared to
|
||||||
|
// the unpacked snapshot later in this test's call to `verify_snapshot_archive()`.
|
||||||
|
for file in snapshot_storage_files {
|
||||||
|
fs::copy(
|
||||||
|
&file,
|
||||||
|
&saved_accounts_dir.path().join(file.file_name().unwrap()),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
}
|
||||||
let last_snapshot_path = fs::read_dir(snapshot_path)
|
let last_snapshot_path = fs::read_dir(snapshot_path)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.filter_map(|entry| {
|
.filter_map(|entry| {
|
||||||
@ -387,6 +405,7 @@ mod tests {
|
|||||||
.last()
|
.last()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
// only save off the snapshot of this slot, we don't need the others.
|
// only save off the snapshot of this slot, we don't need the others.
|
||||||
|
let options = CopyOptions::new();
|
||||||
fs_extra::dir::copy(&last_snapshot_path, &saved_snapshots_dir, &options).unwrap();
|
fs_extra::dir::copy(&last_snapshot_path, &saved_snapshots_dir, &options).unwrap();
|
||||||
|
|
||||||
saved_archive_path = Some(snapshot_utils::get_snapshot_archive_path(
|
saved_archive_path = Some(snapshot_utils::get_snapshot_archive_path(
|
||||||
@ -480,9 +499,7 @@ mod tests {
|
|||||||
snapshot_utils::verify_snapshot_archive(
|
snapshot_utils::verify_snapshot_archive(
|
||||||
saved_archive_path.unwrap(),
|
saved_archive_path.unwrap(),
|
||||||
saved_snapshots_dir.path(),
|
saved_snapshots_dir.path(),
|
||||||
saved_accounts_dir
|
saved_accounts_dir.path(),
|
||||||
.path()
|
|
||||||
.join(accounts_dir.path().file_name().unwrap()),
|
|
||||||
ArchiveFormat::TarBzip2,
|
ArchiveFormat::TarBzip2,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user