Move SnapshotConfig into its own module (#18331)
Also move ArchiveFormat to snapshot_utils, and do not reexport SnapshotVersion.
This commit is contained in:
@ -217,8 +217,7 @@ impl AccountsHashVerifier {
|
|||||||
mod tests {
|
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::bank_forks::ArchiveFormat;
|
use solana_runtime::snapshot_utils::{ArchiveFormat, SnapshotVersion};
|
||||||
use solana_runtime::snapshot_utils::SnapshotVersion;
|
|
||||||
use solana_sdk::{
|
use solana_sdk::{
|
||||||
hash::hash,
|
hash::hash,
|
||||||
signature::{Keypair, Signer},
|
signature::{Keypair, Signer},
|
||||||
|
@ -78,9 +78,8 @@ mod tests {
|
|||||||
use solana_runtime::{
|
use solana_runtime::{
|
||||||
accounts_db::AccountStorageEntry,
|
accounts_db::AccountStorageEntry,
|
||||||
bank::BankSlotDelta,
|
bank::BankSlotDelta,
|
||||||
bank_forks::ArchiveFormat,
|
|
||||||
snapshot_package::AccountsPackage,
|
snapshot_package::AccountsPackage,
|
||||||
snapshot_utils::{self, SnapshotVersion, SNAPSHOT_STATUS_CACHE_FILE_NAME},
|
snapshot_utils::{self, ArchiveFormat, SnapshotVersion, SNAPSHOT_STATUS_CACHE_FILE_NAME},
|
||||||
};
|
};
|
||||||
use solana_sdk::hash::Hash;
|
use solana_sdk::hash::Hash;
|
||||||
use std::{
|
use std::{
|
||||||
|
@ -6,10 +6,10 @@ use {
|
|||||||
solana_net_utils::PortRange,
|
solana_net_utils::PortRange,
|
||||||
solana_rpc::rpc::JsonRpcConfig,
|
solana_rpc::rpc::JsonRpcConfig,
|
||||||
solana_runtime::{
|
solana_runtime::{
|
||||||
bank_forks::{ArchiveFormat, SnapshotConfig, SnapshotVersion},
|
|
||||||
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_utils::DEFAULT_MAX_SNAPSHOTS_TO_RETAIN,
|
snapshot_config::SnapshotConfig,
|
||||||
|
snapshot_utils::{ArchiveFormat, SnapshotVersion, DEFAULT_MAX_SNAPSHOTS_TO_RETAIN},
|
||||||
},
|
},
|
||||||
solana_sdk::{
|
solana_sdk::{
|
||||||
account::{Account, AccountSharedData},
|
account::{Account, AccountSharedData},
|
||||||
|
@ -38,8 +38,9 @@ use solana_runtime::{
|
|||||||
AbsRequestHandler, AbsRequestSender, AccountsBackgroundService, SnapshotRequestHandler,
|
AbsRequestHandler, AbsRequestSender, AccountsBackgroundService, SnapshotRequestHandler,
|
||||||
},
|
},
|
||||||
accounts_db::AccountShrinkThreshold,
|
accounts_db::AccountShrinkThreshold,
|
||||||
bank_forks::{BankForks, SnapshotConfig},
|
bank_forks::BankForks,
|
||||||
commitment::BlockCommitmentCache,
|
commitment::BlockCommitmentCache,
|
||||||
|
snapshot_config::SnapshotConfig,
|
||||||
vote_sender_types::ReplayVoteSender,
|
vote_sender_types::ReplayVoteSender,
|
||||||
};
|
};
|
||||||
use solana_sdk::{pubkey::Pubkey, signature::Keypair};
|
use solana_sdk::{pubkey::Pubkey, signature::Keypair};
|
||||||
|
@ -57,9 +57,10 @@ use solana_runtime::{
|
|||||||
accounts_db::AccountShrinkThreshold,
|
accounts_db::AccountShrinkThreshold,
|
||||||
accounts_index::AccountSecondaryIndexes,
|
accounts_index::AccountSecondaryIndexes,
|
||||||
bank::Bank,
|
bank::Bank,
|
||||||
bank_forks::{BankForks, SnapshotConfig},
|
bank_forks::BankForks,
|
||||||
commitment::BlockCommitmentCache,
|
commitment::BlockCommitmentCache,
|
||||||
hardened_unpack::{open_genesis_config, MAX_GENESIS_ARCHIVE_UNPACKED_SIZE},
|
hardened_unpack::{open_genesis_config, MAX_GENESIS_ARCHIVE_UNPACKED_SIZE},
|
||||||
|
snapshot_config::SnapshotConfig,
|
||||||
};
|
};
|
||||||
use solana_sdk::{
|
use solana_sdk::{
|
||||||
clock::Slot,
|
clock::Slot,
|
||||||
|
@ -46,10 +46,10 @@ mod tests {
|
|||||||
accounts_db,
|
accounts_db,
|
||||||
accounts_index::AccountSecondaryIndexes,
|
accounts_index::AccountSecondaryIndexes,
|
||||||
bank::{Bank, BankSlotDelta},
|
bank::{Bank, BankSlotDelta},
|
||||||
bank_forks::{ArchiveFormat, BankForks, SnapshotConfig},
|
bank_forks::BankForks,
|
||||||
genesis_utils::{create_genesis_config, GenesisConfigInfo},
|
genesis_utils::{create_genesis_config, GenesisConfigInfo},
|
||||||
snapshot_utils,
|
snapshot_config::SnapshotConfig,
|
||||||
snapshot_utils::{SnapshotVersion, DEFAULT_MAX_SNAPSHOTS_TO_RETAIN},
|
snapshot_utils::{self, ArchiveFormat, SnapshotVersion, DEFAULT_MAX_SNAPSHOTS_TO_RETAIN},
|
||||||
status_cache::MAX_CACHE_ENTRIES,
|
status_cache::MAX_CACHE_ENTRIES,
|
||||||
};
|
};
|
||||||
use solana_sdk::{
|
use solana_sdk::{
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
use console::Emoji;
|
use console::Emoji;
|
||||||
use indicatif::{ProgressBar, ProgressStyle};
|
use indicatif::{ProgressBar, ProgressStyle};
|
||||||
use log::*;
|
use log::*;
|
||||||
use solana_runtime::{bank_forks::ArchiveFormat, snapshot_utils};
|
use solana_runtime::{snapshot_utils, snapshot_utils::ArchiveFormat};
|
||||||
use solana_sdk::{clock::Slot, genesis_config::DEFAULT_GENESIS_ARCHIVE, hash::Hash};
|
use solana_sdk::{clock::Slot, genesis_config::DEFAULT_GENESIS_ARCHIVE, hash::Hash};
|
||||||
use std::fs::{self, File};
|
use std::fs::{self, File};
|
||||||
use std::io;
|
use std::io;
|
||||||
|
@ -27,10 +27,10 @@ use solana_ledger::{
|
|||||||
};
|
};
|
||||||
use solana_runtime::{
|
use solana_runtime::{
|
||||||
bank::{Bank, RewardCalculationEvent},
|
bank::{Bank, RewardCalculationEvent},
|
||||||
bank_forks::{ArchiveFormat, BankForks, SnapshotConfig},
|
bank_forks::BankForks,
|
||||||
hardened_unpack::{open_genesis_config, MAX_GENESIS_ARCHIVE_UNPACKED_SIZE},
|
hardened_unpack::{open_genesis_config, MAX_GENESIS_ARCHIVE_UNPACKED_SIZE},
|
||||||
snapshot_utils,
|
snapshot_config::SnapshotConfig,
|
||||||
snapshot_utils::{SnapshotVersion, DEFAULT_MAX_SNAPSHOTS_TO_RETAIN},
|
snapshot_utils::{self, ArchiveFormat, SnapshotVersion, DEFAULT_MAX_SNAPSHOTS_TO_RETAIN},
|
||||||
};
|
};
|
||||||
use solana_sdk::{
|
use solana_sdk::{
|
||||||
account::{AccountSharedData, ReadableAccount, WritableAccount},
|
account::{AccountSharedData, ReadableAccount, WritableAccount},
|
||||||
|
@ -9,8 +9,9 @@ use crate::{
|
|||||||
};
|
};
|
||||||
use log::*;
|
use log::*;
|
||||||
use solana_runtime::{
|
use solana_runtime::{
|
||||||
bank_forks::{ArchiveFormat, BankForks, SnapshotConfig},
|
bank_forks::BankForks,
|
||||||
snapshot_utils,
|
snapshot_config::SnapshotConfig,
|
||||||
|
snapshot_utils::{self, ArchiveFormat},
|
||||||
};
|
};
|
||||||
use solana_sdk::{clock::Slot, genesis_config::GenesisConfig, hash::Hash};
|
use solana_sdk::{clock::Slot, genesis_config::GenesisConfig, hash::Hash};
|
||||||
use std::{fs, path::PathBuf, process, result};
|
use std::{fs, path::PathBuf, process, result};
|
||||||
|
@ -37,8 +37,8 @@ use solana_local_cluster::{
|
|||||||
validator_configs::*,
|
validator_configs::*,
|
||||||
};
|
};
|
||||||
use solana_runtime::{
|
use solana_runtime::{
|
||||||
bank_forks::{ArchiveFormat, SnapshotConfig},
|
snapshot_config::SnapshotConfig,
|
||||||
snapshot_utils,
|
snapshot_utils::{self, ArchiveFormat},
|
||||||
};
|
};
|
||||||
use solana_sdk::{
|
use solana_sdk::{
|
||||||
account::AccountSharedData,
|
account::AccountSharedData,
|
||||||
|
@ -44,10 +44,11 @@ use {
|
|||||||
accounts::AccountAddressFilter,
|
accounts::AccountAddressFilter,
|
||||||
accounts_index::{AccountIndex, AccountSecondaryIndexes, IndexKey},
|
accounts_index::{AccountIndex, AccountSecondaryIndexes, IndexKey},
|
||||||
bank::Bank,
|
bank::Bank,
|
||||||
bank_forks::{BankForks, SnapshotConfig},
|
bank_forks::BankForks,
|
||||||
commitment::{BlockCommitmentArray, BlockCommitmentCache, CommitmentSlots},
|
commitment::{BlockCommitmentArray, BlockCommitmentCache, CommitmentSlots},
|
||||||
inline_spl_token_v2_0::{SPL_TOKEN_ACCOUNT_MINT_OFFSET, SPL_TOKEN_ACCOUNT_OWNER_OFFSET},
|
inline_spl_token_v2_0::{SPL_TOKEN_ACCOUNT_MINT_OFFSET, SPL_TOKEN_ACCOUNT_OWNER_OFFSET},
|
||||||
non_circulating_supply::calculate_non_circulating_supply,
|
non_circulating_supply::calculate_non_circulating_supply,
|
||||||
|
snapshot_config::SnapshotConfig,
|
||||||
snapshot_utils::get_highest_snapshot_archive_path,
|
snapshot_utils::get_highest_snapshot_archive_path,
|
||||||
},
|
},
|
||||||
solana_sdk::{
|
solana_sdk::{
|
||||||
|
@ -23,8 +23,7 @@ use {
|
|||||||
solana_metrics::inc_new_counter_info,
|
solana_metrics::inc_new_counter_info,
|
||||||
solana_poh::poh_recorder::PohRecorder,
|
solana_poh::poh_recorder::PohRecorder,
|
||||||
solana_runtime::{
|
solana_runtime::{
|
||||||
bank_forks::{BankForks, SnapshotConfig},
|
bank_forks::BankForks, commitment::BlockCommitmentCache, snapshot_config::SnapshotConfig,
|
||||||
commitment::BlockCommitmentCache,
|
|
||||||
snapshot_utils,
|
snapshot_utils,
|
||||||
},
|
},
|
||||||
solana_sdk::{
|
solana_sdk::{
|
||||||
@ -490,8 +489,8 @@ mod tests {
|
|||||||
get_tmp_ledger_path,
|
get_tmp_ledger_path,
|
||||||
},
|
},
|
||||||
solana_runtime::{
|
solana_runtime::{
|
||||||
bank::Bank, bank_forks::ArchiveFormat, snapshot_utils::SnapshotVersion,
|
bank::Bank,
|
||||||
snapshot_utils::DEFAULT_MAX_SNAPSHOTS_TO_RETAIN,
|
snapshot_utils::{ArchiveFormat, SnapshotVersion, DEFAULT_MAX_SNAPSHOTS_TO_RETAIN},
|
||||||
},
|
},
|
||||||
solana_sdk::{
|
solana_sdk::{
|
||||||
genesis_config::{ClusterType, DEFAULT_GENESIS_ARCHIVE},
|
genesis_config::{ClusterType, DEFAULT_GENESIS_ARCHIVE},
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
bank::{Bank, BankSlotDelta, DropCallback},
|
bank::{Bank, BankSlotDelta, DropCallback},
|
||||||
bank_forks::{BankForks, SnapshotConfig},
|
bank_forks::BankForks,
|
||||||
|
snapshot_config::SnapshotConfig,
|
||||||
snapshot_package::AccountsPackageSender,
|
snapshot_package::AccountsPackageSender,
|
||||||
snapshot_utils,
|
snapshot_utils,
|
||||||
};
|
};
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
accounts_background_service::{AbsRequestSender, SnapshotRequest},
|
accounts_background_service::{AbsRequestSender, SnapshotRequest},
|
||||||
bank::Bank,
|
bank::Bank,
|
||||||
|
snapshot_config::SnapshotConfig,
|
||||||
};
|
};
|
||||||
use log::*;
|
use log::*;
|
||||||
use solana_metrics::inc_new_counter_info;
|
use solana_metrics::inc_new_counter_info;
|
||||||
@ -10,41 +11,10 @@ use solana_sdk::{clock::Slot, hash::Hash, timing};
|
|||||||
use std::{
|
use std::{
|
||||||
collections::{hash_map::Entry, HashMap, HashSet},
|
collections::{hash_map::Entry, HashMap, HashSet},
|
||||||
ops::Index,
|
ops::Index,
|
||||||
path::PathBuf,
|
|
||||||
sync::Arc,
|
sync::Arc,
|
||||||
time::Instant,
|
time::Instant,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub use crate::snapshot_utils::SnapshotVersion;
|
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
|
|
||||||
pub enum ArchiveFormat {
|
|
||||||
TarBzip2,
|
|
||||||
TarGzip,
|
|
||||||
TarZstd,
|
|
||||||
Tar,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, Eq, PartialEq)]
|
|
||||||
pub struct SnapshotConfig {
|
|
||||||
// Generate a new snapshot every this many slots
|
|
||||||
pub snapshot_interval_slots: u64,
|
|
||||||
|
|
||||||
// Where to store the latest packaged snapshot
|
|
||||||
pub snapshot_package_output_path: PathBuf,
|
|
||||||
|
|
||||||
// Where to place the snapshots for recent slots
|
|
||||||
pub snapshot_path: PathBuf,
|
|
||||||
|
|
||||||
pub archive_format: ArchiveFormat,
|
|
||||||
|
|
||||||
// Snapshot version to generate
|
|
||||||
pub snapshot_version: SnapshotVersion,
|
|
||||||
|
|
||||||
// Maximum number of snapshots to retain
|
|
||||||
pub maximum_snapshots_to_retain: usize,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct BankForks {
|
pub struct BankForks {
|
||||||
banks: HashMap<Slot, Arc<Bank>>,
|
banks: HashMap<Slot, Arc<Bank>>,
|
||||||
descendants: HashMap<Slot, HashSet<Slot>>,
|
descendants: HashMap<Slot, HashSet<Slot>>,
|
||||||
|
@ -33,6 +33,7 @@ mod read_only_accounts_cache;
|
|||||||
pub mod rent_collector;
|
pub mod rent_collector;
|
||||||
pub mod secondary_index;
|
pub mod secondary_index;
|
||||||
pub mod serde_snapshot;
|
pub mod serde_snapshot;
|
||||||
|
pub mod snapshot_config;
|
||||||
pub mod snapshot_package;
|
pub mod snapshot_package;
|
||||||
pub mod snapshot_runtime_info;
|
pub mod snapshot_runtime_info;
|
||||||
pub mod snapshot_utils;
|
pub mod snapshot_utils;
|
||||||
|
26
runtime/src/snapshot_config.rs
Normal file
26
runtime/src/snapshot_config.rs
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
use crate::snapshot_utils::ArchiveFormat;
|
||||||
|
use crate::snapshot_utils::SnapshotVersion;
|
||||||
|
use solana_sdk::clock::Slot;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
/// Snapshot configuration and runtime information
|
||||||
|
#[derive(Clone, Debug)]
|
||||||
|
pub struct SnapshotConfig {
|
||||||
|
/// Generate a new snapshot every this many slots
|
||||||
|
pub snapshot_interval_slots: Slot,
|
||||||
|
|
||||||
|
/// Where to store the latest packaged snapshot
|
||||||
|
pub snapshot_package_output_path: PathBuf,
|
||||||
|
|
||||||
|
/// Where to place the snapshots for recent slots
|
||||||
|
pub snapshot_path: PathBuf,
|
||||||
|
|
||||||
|
/// The archive format to use for snapshots
|
||||||
|
pub archive_format: ArchiveFormat,
|
||||||
|
|
||||||
|
/// Snapshot version to generate
|
||||||
|
pub snapshot_version: SnapshotVersion,
|
||||||
|
|
||||||
|
/// Maximum number of snapshots to retain
|
||||||
|
pub maximum_snapshots_to_retain: usize,
|
||||||
|
}
|
@ -1,5 +1,4 @@
|
|||||||
use crate::bank_forks::ArchiveFormat;
|
use crate::snapshot_utils::{ArchiveFormat, SnapshotVersion};
|
||||||
use crate::snapshot_utils::SnapshotVersion;
|
|
||||||
use crate::{accounts_db::SnapshotStorages, bank::BankSlotDelta};
|
use crate::{accounts_db::SnapshotStorages, bank::BankSlotDelta};
|
||||||
use solana_sdk::clock::Slot;
|
use solana_sdk::clock::Slot;
|
||||||
use solana_sdk::genesis_config::ClusterType;
|
use solana_sdk::genesis_config::ClusterType;
|
||||||
|
@ -3,7 +3,6 @@ use {
|
|||||||
accounts_db::{AccountShrinkThreshold, AccountsDb},
|
accounts_db::{AccountShrinkThreshold, AccountsDb},
|
||||||
accounts_index::AccountSecondaryIndexes,
|
accounts_index::AccountSecondaryIndexes,
|
||||||
bank::{Bank, BankSlotDelta, Builtins},
|
bank::{Bank, BankSlotDelta, Builtins},
|
||||||
bank_forks::ArchiveFormat,
|
|
||||||
hardened_unpack::{unpack_snapshot, ParallelSelector, UnpackError, UnpackedAppendVecMap},
|
hardened_unpack::{unpack_snapshot, ParallelSelector, UnpackError, UnpackedAppendVecMap},
|
||||||
serde_snapshot::{
|
serde_snapshot::{
|
||||||
bank_from_stream, bank_to_stream, SerdeStyle, SnapshotStorage, SnapshotStorages,
|
bank_from_stream, bank_to_stream, SerdeStyle, SnapshotStorage, SnapshotStorages,
|
||||||
@ -103,6 +102,15 @@ impl SnapshotVersion {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// The different archive formats used for snapshots
|
||||||
|
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
|
||||||
|
pub enum ArchiveFormat {
|
||||||
|
TarBzip2,
|
||||||
|
TarGzip,
|
||||||
|
TarZstd,
|
||||||
|
Tar,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(PartialEq, Eq, Debug)]
|
#[derive(PartialEq, Eq, Debug)]
|
||||||
pub struct SlotSnapshotPaths {
|
pub struct SlotSnapshotPaths {
|
||||||
pub slot: Slot,
|
pub slot: Slot,
|
||||||
|
@ -46,9 +46,12 @@ use {
|
|||||||
accounts_index::{
|
accounts_index::{
|
||||||
AccountIndex, AccountSecondaryIndexes, AccountSecondaryIndexesIncludeExclude,
|
AccountIndex, AccountSecondaryIndexes, AccountSecondaryIndexesIncludeExclude,
|
||||||
},
|
},
|
||||||
bank_forks::{ArchiveFormat, SnapshotConfig, SnapshotVersion},
|
|
||||||
hardened_unpack::MAX_GENESIS_ARCHIVE_UNPACKED_SIZE,
|
hardened_unpack::MAX_GENESIS_ARCHIVE_UNPACKED_SIZE,
|
||||||
snapshot_utils::{get_highest_snapshot_archive_path, DEFAULT_MAX_SNAPSHOTS_TO_RETAIN},
|
snapshot_config::SnapshotConfig,
|
||||||
|
snapshot_utils::{
|
||||||
|
get_highest_snapshot_archive_path, ArchiveFormat, SnapshotVersion,
|
||||||
|
DEFAULT_MAX_SNAPSHOTS_TO_RETAIN,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
solana_sdk::{
|
solana_sdk::{
|
||||||
clock::{Slot, DEFAULT_S_PER_SLOT},
|
clock::{Slot, DEFAULT_S_PER_SLOT},
|
||||||
|
Reference in New Issue
Block a user