FoundStoredAccount removes store_id (#29590)

This commit is contained in:
Jeff Washington (jwash) 2023-01-10 07:28:41 -06:00 committed by GitHub
parent 00bee936b1
commit 1d675c6205
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 19 deletions

View File

@ -419,7 +419,6 @@ pub struct AccountsDbConfig {
pub struct FoundStoredAccount<'a> { pub struct FoundStoredAccount<'a> {
pub account: StoredAccountMeta<'a>, pub account: StoredAccountMeta<'a>,
pub store_id: AppendVecId,
} }
impl<'a> FoundStoredAccount<'a> { impl<'a> FoundStoredAccount<'a> {
@ -3609,6 +3608,7 @@ impl AccountsDb {
&'a self, &'a self,
accounts: &'a [FoundStoredAccount<'a>], accounts: &'a [FoundStoredAccount<'a>],
stats: &ShrinkStats, stats: &ShrinkStats,
slot_to_shrink: Slot,
) -> LoadAccountsIndexForShrink<'a> { ) -> LoadAccountsIndexForShrink<'a> {
let count = accounts.len(); let count = accounts.len();
let mut alive_accounts = Vec::with_capacity(count); let mut alive_accounts = Vec::with_capacity(count);
@ -3626,11 +3626,12 @@ impl AccountsDb {
let mut result = AccountsIndexScanResult::None; let mut result = AccountsIndexScanResult::None;
if let Some((slot_list, _ref_count)) = slots_refs { if let Some((slot_list, _ref_count)) = slots_refs {
let stored_account = &accounts[index]; let stored_account = &accounts[index];
let is_alive = slot_list.iter().any(|(_slot, acct_info)| { let is_alive = slot_list.iter().any(|(slot, acct_info)| {
acct_info.matches_storage_location( *slot == slot_to_shrink
stored_account.store_id, && acct_info.matches_storage_location(
stored_account.account.offset, acct_info.store_id(),
) stored_account.account.offset,
)
}); });
if !is_alive { if !is_alive {
// This pubkey was found in the storage, but no longer exists in the index. // This pubkey was found in the storage, but no longer exists in the index.
@ -3672,9 +3673,8 @@ impl AccountsDb {
) -> GetUniqueAccountsResult<'a> { ) -> GetUniqueAccountsResult<'a> {
let mut stored_accounts: HashMap<Pubkey, FoundStoredAccount> = HashMap::new(); let mut stored_accounts: HashMap<Pubkey, FoundStoredAccount> = HashMap::new();
let original_bytes = store.total_bytes(); let original_bytes = store.total_bytes();
let store_id = store.append_vec_id();
store.accounts.account_iter().for_each(|account| { store.accounts.account_iter().for_each(|account| {
let new_entry = FoundStoredAccount { account, store_id }; let new_entry = FoundStoredAccount { account };
match stored_accounts.entry(*new_entry.account.pubkey()) { match stored_accounts.entry(*new_entry.account.pubkey()) {
Entry::Occupied(mut occupied_entry) => { Entry::Occupied(mut occupied_entry) => {
assert!( assert!(
@ -3714,6 +3714,7 @@ impl AccountsDb {
}, },
storage_read_elapsed, storage_read_elapsed,
) = measure!(self.get_unique_accounts_from_storages(store)); ) = measure!(self.get_unique_accounts_from_storages(store));
let slot = store.slot();
stats stats
.storage_read_elapsed .storage_read_elapsed
.fetch_add(storage_read_elapsed.as_us(), Ordering::Relaxed); .fetch_add(storage_read_elapsed.as_us(), Ordering::Relaxed);
@ -3738,7 +3739,7 @@ impl AccountsDb {
mut alive_accounts, mut alive_accounts,
mut unrefed_pubkeys, mut unrefed_pubkeys,
all_are_zero_lamports, all_are_zero_lamports,
} = self.load_accounts_index_for_shrink(stored_accounts, stats); } = self.load_accounts_index_for_shrink(stored_accounts, stats, slot);
// collect // collect
alive_accounts_collect alive_accounts_collect
@ -9461,7 +9462,6 @@ pub mod tests {
// setup 'to_store' // setup 'to_store'
let pubkey = Pubkey::new(&[1; 32]); let pubkey = Pubkey::new(&[1; 32]);
let store_id = AppendVecId::default();
let account_size = 3; let account_size = 3;
let account = AccountSharedData::default(); let account = AccountSharedData::default();
@ -9490,7 +9490,7 @@ pub mod tests {
stored_size: account_size, stored_size: account_size,
hash: &hash, hash: &hash,
}; };
let found = FoundStoredAccount { account, store_id }; let found = FoundStoredAccount { account };
let map = vec![&found]; let map = vec![&found];
let alive_total_bytes = found.account.stored_size; let alive_total_bytes = found.account.stored_size;
let to_store = AccountsToStore::new(available_bytes, &map, alive_total_bytes, slot0); let to_store = AccountsToStore::new(available_bytes, &map, alive_total_bytes, slot0);
@ -9610,22 +9610,17 @@ pub mod tests {
stored_size, stored_size,
hash: &hash, hash: &hash,
}; };
let store_id = 0;
let found_account = FoundStoredAccount { let found_account = FoundStoredAccount {
account: stored_account, account: stored_account,
store_id,
}; };
let found_account2 = FoundStoredAccount { let found_account2 = FoundStoredAccount {
account: stored_account2, account: stored_account2,
store_id,
}; };
let found_account3 = FoundStoredAccount { let found_account3 = FoundStoredAccount {
account: stored_account3, account: stored_account3,
store_id,
}; };
let found_account4 = FoundStoredAccount { let found_account4 = FoundStoredAccount {
account: stored_account4, account: stored_account4,
store_id,
}; };
let mut existing_ancient_pubkeys = HashSet::default(); let mut existing_ancient_pubkeys = HashSet::default();
let accounts = [&found_account]; let accounts = [&found_account];

View File

@ -95,7 +95,7 @@ pub mod tests {
use { use {
super::*, super::*,
crate::{ crate::{
accounts_db::{get_temp_accounts_paths, AppendVecId}, accounts_db::get_temp_accounts_paths,
append_vec::{AccountMeta, StoredAccountMeta, StoredMeta}, append_vec::{AccountMeta, StoredAccountMeta, StoredMeta},
}, },
solana_sdk::{ solana_sdk::{
@ -120,7 +120,6 @@ pub mod tests {
#[test] #[test]
fn test_accounts_to_store_more() { fn test_accounts_to_store_more() {
let pubkey = Pubkey::new(&[1; 32]); let pubkey = Pubkey::new(&[1; 32]);
let store_id = AppendVecId::default();
let account_size = 3; let account_size = 3;
let account = AccountSharedData::default(); let account = AccountSharedData::default();
@ -149,7 +148,7 @@ pub mod tests {
stored_size: account_size, stored_size: account_size,
hash: &hash, hash: &hash,
}; };
let found = FoundStoredAccount { account, store_id }; let found = FoundStoredAccount { account };
let map = vec![&found]; let map = vec![&found];
for (selector, available_bytes) in [ for (selector, available_bytes) in [
(StorageSelector::Primary, account_size), (StorageSelector::Primary, account_size),