Fold bank serialisation into serde snapshot (#10581)
* Move bank (de)serialisation logic from bank and snapshot_utils to serde_snapshot. Add sanity assertions between genesis config and bank fields on deserialisation. Atomically update atomic bool in quote_for_specialization_detection(). Use same genesis config when restoring snapshots in test cases. * Tidy up namings and duplicate structs to version * Apply struct renames to tests * Update abi hashes Co-authored-by: Ryo Onodera <ryoqun@gmail.com>
This commit is contained in:
committed by
GitHub
parent
5c86766fb2
commit
ed5a2f2a90
@@ -66,23 +66,19 @@ pub enum AccountAddressFilter {
|
||||
}
|
||||
|
||||
impl Accounts {
|
||||
pub(crate) fn new_empty(accounts_db: AccountsDB) -> Self {
|
||||
pub fn new(paths: Vec<PathBuf>) -> Self {
|
||||
Self {
|
||||
accounts_db: Arc::new(accounts_db),
|
||||
slot: 0,
|
||||
accounts_db: Arc::new(AccountsDB::new(paths)),
|
||||
account_locks: Mutex::new(HashSet::new()),
|
||||
readonly_locks: Arc::new(RwLock::new(Some(HashMap::new()))),
|
||||
..Self::default()
|
||||
}
|
||||
}
|
||||
|
||||
pub fn new(paths: Vec<PathBuf>) -> Self {
|
||||
Self::new_with_frozen_accounts(paths, &HashMap::default(), &[])
|
||||
}
|
||||
|
||||
pub fn new_from_parent(parent: &Accounts, slot: Slot, parent_slot: Slot) -> Self {
|
||||
let accounts_db = parent.accounts_db.clone();
|
||||
accounts_db.set_hash(slot, parent_slot);
|
||||
Accounts {
|
||||
Self {
|
||||
slot,
|
||||
accounts_db,
|
||||
account_locks: Mutex::new(HashSet::new()),
|
||||
@@ -90,25 +86,13 @@ impl Accounts {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn new_with_frozen_accounts(
|
||||
paths: Vec<PathBuf>,
|
||||
ancestors: &Ancestors,
|
||||
frozen_account_pubkeys: &[Pubkey],
|
||||
) -> Self {
|
||||
let mut accounts = Accounts {
|
||||
pub(crate) fn new_empty(accounts_db: AccountsDB) -> Self {
|
||||
Self {
|
||||
slot: 0,
|
||||
accounts_db: Arc::new(AccountsDB::new(paths)),
|
||||
accounts_db: Arc::new(accounts_db),
|
||||
account_locks: Mutex::new(HashSet::new()),
|
||||
readonly_locks: Arc::new(RwLock::new(Some(HashMap::new()))),
|
||||
};
|
||||
accounts.freeze_accounts(ancestors, frozen_account_pubkeys);
|
||||
accounts
|
||||
}
|
||||
|
||||
pub fn freeze_accounts(&mut self, ancestors: &Ancestors, frozen_account_pubkeys: &[Pubkey]) {
|
||||
Arc::get_mut(&mut self.accounts_db)
|
||||
.unwrap()
|
||||
.freeze_accounts(ancestors, frozen_account_pubkeys);
|
||||
}
|
||||
}
|
||||
|
||||
/// Return true if the slice has any duplicate elements
|
||||
|
Reference in New Issue
Block a user