Add LastFullSnapshotSlot to SnapshotConfig (#19341)

This commit is contained in:
Brooks Prumo 2021-08-20 12:06:53 -05:00 committed by GitHub
parent 3e5ba8dcaa
commit 4d361af976
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 27 additions and 8 deletions

View File

@ -224,6 +224,7 @@ mod tests {
use super::*; use super::*;
use solana_gossip::{cluster_info::make_accounts_hashes_message, contact_info::ContactInfo}; use solana_gossip::{cluster_info::make_accounts_hashes_message, contact_info::ContactInfo};
use solana_runtime::{ use solana_runtime::{
snapshot_config::LastFullSnapshotSlot,
snapshot_package::SnapshotType, snapshot_package::SnapshotType,
snapshot_utils::{ArchiveFormat, SnapshotVersion}, snapshot_utils::{ArchiveFormat, SnapshotVersion},
}; };
@ -297,6 +298,7 @@ mod tests {
archive_format: ArchiveFormat::Tar, archive_format: ArchiveFormat::Tar,
snapshot_version: SnapshotVersion::default(), snapshot_version: SnapshotVersion::default(),
maximum_snapshots_to_retain: usize::MAX, maximum_snapshots_to_retain: usize::MAX,
last_full_snapshot_slot: LastFullSnapshotSlot::default(),
}; };
for i in 0..MAX_SNAPSHOT_HASHES + 1 { for i in 0..MAX_SNAPSHOT_HASHES + 1 {
let slot = full_snapshot_archive_interval_slots + i as u64; let slot = full_snapshot_archive_interval_slots + i as u64;

View File

@ -15,7 +15,7 @@ use {
solana_runtime::{ solana_runtime::{
genesis_utils::create_genesis_config_with_leader_ex, genesis_utils::create_genesis_config_with_leader_ex,
hardened_unpack::MAX_GENESIS_ARCHIVE_UNPACKED_SIZE, hardened_unpack::MAX_GENESIS_ARCHIVE_UNPACKED_SIZE,
snapshot_config::SnapshotConfig, snapshot_config::{LastFullSnapshotSlot, SnapshotConfig},
snapshot_utils::{ snapshot_utils::{
ArchiveFormat, SnapshotVersion, DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN, ArchiveFormat, SnapshotVersion, DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN,
}, },
@ -528,6 +528,7 @@ impl TestValidator {
archive_format: ArchiveFormat::Tar, archive_format: ArchiveFormat::Tar,
snapshot_version: SnapshotVersion::default(), snapshot_version: SnapshotVersion::default(),
maximum_snapshots_to_retain: DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN, maximum_snapshots_to_retain: DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN,
last_full_snapshot_slot: LastFullSnapshotSlot::default(),
}), }),
enforce_ulimit_nofile: false, enforce_ulimit_nofile: false,
warp_slot: config.warp_slot, warp_slot: config.warp_slot,

View File

@ -65,7 +65,7 @@ mod tests {
bank_forks::BankForks, bank_forks::BankForks,
genesis_utils::{create_genesis_config, GenesisConfigInfo}, genesis_utils::{create_genesis_config, GenesisConfigInfo},
snapshot_archive_info::FullSnapshotArchiveInfo, snapshot_archive_info::FullSnapshotArchiveInfo,
snapshot_config::SnapshotConfig, snapshot_config::{LastFullSnapshotSlot, SnapshotConfig},
snapshot_package::{AccountsPackage, PendingSnapshotPackage}, snapshot_package::{AccountsPackage, PendingSnapshotPackage},
snapshot_utils::{ snapshot_utils::{
self, ArchiveFormat, SnapshotVersion, DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN, self, ArchiveFormat, SnapshotVersion, DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN,
@ -146,6 +146,7 @@ mod tests {
archive_format: ArchiveFormat::TarBzip2, archive_format: ArchiveFormat::TarBzip2,
snapshot_version, snapshot_version,
maximum_snapshots_to_retain: DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN, maximum_snapshots_to_retain: DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN,
last_full_snapshot_slot: LastFullSnapshotSlot::default(),
}; };
bank_forks.set_snapshot_config(Some(snapshot_config.clone())); bank_forks.set_snapshot_config(Some(snapshot_config.clone()));
SnapshotTestConfig { SnapshotTestConfig {

View File

@ -31,7 +31,7 @@ use solana_runtime::{
bank_forks::BankForks, bank_forks::BankForks,
hardened_unpack::{open_genesis_config, MAX_GENESIS_ARCHIVE_UNPACKED_SIZE}, hardened_unpack::{open_genesis_config, MAX_GENESIS_ARCHIVE_UNPACKED_SIZE},
snapshot_archive_info::SnapshotArchiveInfoGetter, snapshot_archive_info::SnapshotArchiveInfoGetter,
snapshot_config::SnapshotConfig, snapshot_config::{LastFullSnapshotSlot, SnapshotConfig},
snapshot_utils::{ snapshot_utils::{
self, ArchiveFormat, SnapshotVersion, DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN, self, ArchiveFormat, SnapshotVersion, DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN,
}, },
@ -719,6 +719,7 @@ fn load_bank_forks(
archive_format: ArchiveFormat::TarBzip2, archive_format: ArchiveFormat::TarBzip2,
snapshot_version: SnapshotVersion::default(), snapshot_version: SnapshotVersion::default(),
maximum_snapshots_to_retain: DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN, maximum_snapshots_to_retain: DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN,
last_full_snapshot_slot: LastFullSnapshotSlot::default(),
}) })
}; };
let account_paths = if let Some(account_paths) = arg_matches.value_of("account_paths") { let account_paths = if let Some(account_paths) = arg_matches.value_of("account_paths") {

View File

@ -43,7 +43,7 @@ use {
}, },
solana_runtime::{ solana_runtime::{
snapshot_archive_info::SnapshotArchiveInfoGetter, snapshot_archive_info::SnapshotArchiveInfoGetter,
snapshot_config::SnapshotConfig, snapshot_config::{LastFullSnapshotSlot, SnapshotConfig},
snapshot_utils::{self, ArchiveFormat}, snapshot_utils::{self, ArchiveFormat},
}, },
solana_sdk::{ solana_sdk::{
@ -3478,6 +3478,7 @@ fn setup_snapshot_validator_config(
archive_format: ArchiveFormat::TarBzip2, archive_format: ArchiveFormat::TarBzip2,
snapshot_version: snapshot_utils::SnapshotVersion::default(), snapshot_version: snapshot_utils::SnapshotVersion::default(),
maximum_snapshots_to_retain: snapshot_utils::DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN, maximum_snapshots_to_retain: snapshot_utils::DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN,
last_full_snapshot_slot: LastFullSnapshotSlot::default(),
}; };
// Create the account paths // Create the account paths

View File

@ -23,7 +23,7 @@ use {
bank_forks::BankForks, bank_forks::BankForks,
commitment::BlockCommitmentCache, commitment::BlockCommitmentCache,
hardened_unpack::MAX_GENESIS_ARCHIVE_UNPACKED_SIZE, hardened_unpack::MAX_GENESIS_ARCHIVE_UNPACKED_SIZE,
snapshot_config::SnapshotConfig, snapshot_config::{LastFullSnapshotSlot, SnapshotConfig},
snapshot_utils::{self, ArchiveFormat}, snapshot_utils::{self, ArchiveFormat},
}, },
solana_sdk::{clock::Slot, exit::Exit, genesis_config::GenesisConfig, hash::Hash}, solana_sdk::{clock::Slot, exit::Exit, genesis_config::GenesisConfig, hash::Hash},
@ -263,6 +263,7 @@ impl ReplicaNode {
snapshot_version: snapshot_utils::SnapshotVersion::default(), snapshot_version: snapshot_utils::SnapshotVersion::default(),
maximum_snapshots_to_retain: maximum_snapshots_to_retain:
snapshot_utils::DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN, snapshot_utils::DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN,
last_full_snapshot_slot: LastFullSnapshotSlot::default(),
}; };
let bank_info = let bank_info =

View File

@ -17,7 +17,7 @@ use {
solana_runtime::{ solana_runtime::{
accounts_index::AccountSecondaryIndexes, accounts_index::AccountSecondaryIndexes,
snapshot_archive_info::SnapshotArchiveInfoGetter, snapshot_archive_info::SnapshotArchiveInfoGetter,
snapshot_config::SnapshotConfig, snapshot_config::{LastFullSnapshotSlot, SnapshotConfig},
snapshot_utils::{self, ArchiveFormat}, snapshot_utils::{self, ArchiveFormat},
}, },
solana_sdk::{ solana_sdk::{
@ -127,6 +127,7 @@ fn setup_snapshot_validator_config(
archive_format: ArchiveFormat::TarBzip2, archive_format: ArchiveFormat::TarBzip2,
snapshot_version: snapshot_utils::SnapshotVersion::default(), snapshot_version: snapshot_utils::SnapshotVersion::default(),
maximum_snapshots_to_retain: snapshot_utils::DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN, maximum_snapshots_to_retain: snapshot_utils::DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN,
last_full_snapshot_slot: LastFullSnapshotSlot::default(),
}; };
// Create the account paths // Create the account paths

View File

@ -491,6 +491,7 @@ mod tests {
}, },
solana_runtime::{ solana_runtime::{
bank::Bank, bank::Bank,
snapshot_config::LastFullSnapshotSlot,
snapshot_utils::{ snapshot_utils::{
ArchiveFormat, SnapshotVersion, DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN, ArchiveFormat, SnapshotVersion, DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN,
}, },
@ -608,6 +609,7 @@ mod tests {
archive_format: ArchiveFormat::TarBzip2, archive_format: ArchiveFormat::TarBzip2,
snapshot_version: SnapshotVersion::default(), snapshot_version: SnapshotVersion::default(),
maximum_snapshots_to_retain: DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN, maximum_snapshots_to_retain: DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN,
last_full_snapshot_slot: LastFullSnapshotSlot::default(),
}), }),
bank_forks, bank_forks,
RpcHealth::stub(), RpcHealth::stub(),

View File

@ -1,7 +1,10 @@
use crate::snapshot_utils::ArchiveFormat; use crate::snapshot_utils::ArchiveFormat;
use crate::snapshot_utils::SnapshotVersion; use crate::snapshot_utils::SnapshotVersion;
use solana_sdk::clock::Slot; use solana_sdk::clock::Slot;
use std::path::PathBuf; use std::{
path::PathBuf,
sync::{Arc, RwLock},
};
/// Snapshot configuration and runtime information /// Snapshot configuration and runtime information
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
@ -26,4 +29,9 @@ pub struct SnapshotConfig {
/// Maximum number of full snapshot archives to retain /// Maximum number of full snapshot archives to retain
pub maximum_snapshots_to_retain: usize, pub maximum_snapshots_to_retain: usize,
/// Runtime information of the last full snapshot slot
pub last_full_snapshot_slot: LastFullSnapshotSlot,
} }
pub type LastFullSnapshotSlot = Arc<RwLock<Option<Slot>>>;

View File

@ -49,7 +49,7 @@ use {
}, },
hardened_unpack::MAX_GENESIS_ARCHIVE_UNPACKED_SIZE, hardened_unpack::MAX_GENESIS_ARCHIVE_UNPACKED_SIZE,
snapshot_archive_info::SnapshotArchiveInfoGetter, snapshot_archive_info::SnapshotArchiveInfoGetter,
snapshot_config::SnapshotConfig, snapshot_config::{LastFullSnapshotSlot, SnapshotConfig},
snapshot_utils::{ snapshot_utils::{
self, ArchiveFormat, SnapshotVersion, DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN, self, ArchiveFormat, SnapshotVersion, DEFAULT_MAX_FULL_SNAPSHOT_ARCHIVES_TO_RETAIN,
}, },
@ -2621,6 +2621,7 @@ pub fn main() {
archive_format, archive_format,
snapshot_version, snapshot_version,
maximum_snapshots_to_retain, maximum_snapshots_to_retain,
last_full_snapshot_slot: LastFullSnapshotSlot::default(),
}); });
validator_config.accounts_hash_interval_slots = validator_config.accounts_hash_interval_slots =