Rename slot_hash => bank_hash in AcoountsDB (#7579)
* Rename slot_hash => bank_hash in AcoountsDB
This commit is contained in:
		| @@ -475,10 +475,10 @@ impl Accounts { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     pub fn bank_hash_at(&self, slot_id: Slot) -> BankHash { |     pub fn bank_hash_at(&self, slot_id: Slot) -> BankHash { | ||||||
|         let slot_hashes = self.accounts_db.slot_hashes.read().unwrap(); |         let bank_hashes = self.accounts_db.bank_hashes.read().unwrap(); | ||||||
|         *slot_hashes |         *bank_hashes | ||||||
|             .get(&slot_id) |             .get(&slot_id) | ||||||
|             .expect("No accounts hash was found for this bank, that should not be possible") |             .expect("No bank hash was found for this bank, that should not be possible") | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /// This function will prevent multiple threads from modifying the same account state at the |     /// This function will prevent multiple threads from modifying the same account state at the | ||||||
|   | |||||||
| @@ -344,10 +344,10 @@ impl<'a> Serialize for AccountsDBSerialize<'a> { | |||||||
|         let account_storage_serialize = AccountStorageSerialize::new(&*storage, self.slot); |         let account_storage_serialize = AccountStorageSerialize::new(&*storage, self.slot); | ||||||
|         serialize_into(&mut wr, &account_storage_serialize).map_err(Error::custom)?; |         serialize_into(&mut wr, &account_storage_serialize).map_err(Error::custom)?; | ||||||
|         serialize_into(&mut wr, &version).map_err(Error::custom)?; |         serialize_into(&mut wr, &version).map_err(Error::custom)?; | ||||||
|         let slot_hashes = self.accounts_db.slot_hashes.read().unwrap(); |         let bank_hashes = self.accounts_db.bank_hashes.read().unwrap(); | ||||||
|         serialize_into( |         serialize_into( | ||||||
|             &mut wr, |             &mut wr, | ||||||
|             &(self.slot, &*slot_hashes.get(&self.slot).unwrap()), |             &(self.slot, &*bank_hashes.get(&self.slot).unwrap()), | ||||||
|         ) |         ) | ||||||
|         .map_err(Error::custom)?; |         .map_err(Error::custom)?; | ||||||
|         let len = wr.position() as usize; |         let len = wr.position() as usize; | ||||||
| @@ -384,7 +384,7 @@ pub struct AccountsDB { | |||||||
|     /// the accounts |     /// the accounts | ||||||
|     min_num_stores: usize, |     min_num_stores: usize, | ||||||
|  |  | ||||||
|     pub slot_hashes: RwLock<HashMap<Slot, BankHash>>, |     pub bank_hashes: RwLock<HashMap<Slot, BankHash>>, | ||||||
| } | } | ||||||
|  |  | ||||||
| impl Default for AccountsDB { | impl Default for AccountsDB { | ||||||
| @@ -404,7 +404,7 @@ impl Default for AccountsDB { | |||||||
|                 .build() |                 .build() | ||||||
|                 .unwrap(), |                 .unwrap(), | ||||||
|             min_num_stores: num_threads, |             min_num_stores: num_threads, | ||||||
|             slot_hashes: RwLock::new(HashMap::default()), |             bank_hashes: RwLock::new(HashMap::default()), | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @@ -521,12 +521,9 @@ impl AccountsDB { | |||||||
|         let version: u64 = deserialize_from(&mut stream) |         let version: u64 = deserialize_from(&mut stream) | ||||||
|             .map_err(|_| AccountsDB::get_io_error("write version deserialize error"))?; |             .map_err(|_| AccountsDB::get_io_error("write version deserialize error"))?; | ||||||
|  |  | ||||||
|         let slot_hash: (Slot, BankHash) = deserialize_from(&mut stream) |         let (slot, bank_hash): (Slot, BankHash) = deserialize_from(&mut stream) | ||||||
|             .map_err(|_| AccountsDB::get_io_error("slot hashes deserialize error"))?; |             .map_err(|_| AccountsDB::get_io_error("bank hashes deserialize error"))?; | ||||||
|         self.slot_hashes |         self.bank_hashes.write().unwrap().insert(slot, bank_hash); | ||||||
|             .write() |  | ||||||
|             .unwrap() |  | ||||||
|             .insert(slot_hash.0, slot_hash.1); |  | ||||||
|  |  | ||||||
|         // Process deserialized data, set necessary fields in self |         // Process deserialized data, set necessary fields in self | ||||||
|         *self.paths.write().unwrap() = local_account_paths.to_vec(); |         *self.paths.write().unwrap() = local_account_paths.to_vec(); | ||||||
| @@ -717,11 +714,11 @@ impl AccountsDB { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     pub fn set_hash(&self, slot: Slot, parent_slot: Slot) { |     pub fn set_hash(&self, slot: Slot, parent_slot: Slot) { | ||||||
|         let mut slot_hashes = self.slot_hashes.write().unwrap(); |         let mut bank_hashes = self.bank_hashes.write().unwrap(); | ||||||
|         let hash = *slot_hashes |         let hash = *bank_hashes | ||||||
|             .get(&parent_slot) |             .get(&parent_slot) | ||||||
|             .expect("accounts_db::set_hash::no parent slot"); |             .expect("accounts_db::set_hash::no parent slot"); | ||||||
|         slot_hashes.insert(slot, hash); |         bank_hashes.insert(slot, hash); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     pub fn load( |     pub fn load( | ||||||
| @@ -1007,22 +1004,22 @@ impl AccountsDB { | |||||||
|         for hash in hashes { |         for hash in hashes { | ||||||
|             calculated_hash.xor(hash); |             calculated_hash.xor(hash); | ||||||
|         } |         } | ||||||
|         let slot_hashes = self.slot_hashes.read().unwrap(); |         let bank_hashes = self.bank_hashes.read().unwrap(); | ||||||
|         if let Some(found_hash) = slot_hashes.get(&slot) { |         if let Some(found_hash) = bank_hashes.get(&slot) { | ||||||
|             if calculated_hash == *found_hash { |             if calculated_hash == *found_hash { | ||||||
|                 Ok(()) |                 Ok(()) | ||||||
|             } else { |             } else { | ||||||
|                 Err(MismatchedBankHash) |                 Err(MismatchedBankHash) | ||||||
|             } |             } | ||||||
|         } else { |         } else { | ||||||
|             Err(BankHashVerificatonError::MissingBankHash) |             Err(MissingBankHash) | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     pub fn xor_in_hash_state(&self, slot_id: Slot, hash: BankHash) { |     pub fn xor_in_hash_state(&self, slot_id: Slot, hash: BankHash) { | ||||||
|         let mut slot_hashes = self.slot_hashes.write().unwrap(); |         let mut bank_hashes = self.bank_hashes.write().unwrap(); | ||||||
|         let slot_hash_state = slot_hashes.entry(slot_id).or_insert_with(BankHash::default); |         let bank_hash = bank_hashes.entry(slot_id).or_insert_with(BankHash::default); | ||||||
|         slot_hash_state.xor(hash); |         bank_hash.xor(hash); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     fn update_index( |     fn update_index( | ||||||
| @@ -1100,9 +1097,9 @@ impl AccountsDB { | |||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|             { |             { | ||||||
|                 let mut slot_hashes = self.slot_hashes.write().unwrap(); |                 let mut bank_hashes = self.bank_hashes.write().unwrap(); | ||||||
|                 for slot in dead_slots.iter() { |                 for slot in dead_slots.iter() { | ||||||
|                     slot_hashes.remove(slot); |                     bank_hashes.remove(slot); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| @@ -1837,11 +1834,11 @@ pub mod tests { | |||||||
|         ); |         ); | ||||||
|  |  | ||||||
|         // Get the hash for the latest slot, which should be the only hash in the |         // Get the hash for the latest slot, which should be the only hash in the | ||||||
|         // slot_hashes map on the deserialized AccountsDb |         // bank_hashes map on the deserialized AccountsDb | ||||||
|         assert_eq!(daccounts.slot_hashes.read().unwrap().len(), 1); |         assert_eq!(daccounts.bank_hashes.read().unwrap().len(), 1); | ||||||
|         assert_eq!( |         assert_eq!( | ||||||
|             daccounts.slot_hashes.read().unwrap().get(&latest_slot), |             daccounts.bank_hashes.read().unwrap().get(&latest_slot), | ||||||
|             accounts.slot_hashes.read().unwrap().get(&latest_slot) |             accounts.bank_hashes.read().unwrap().get(&latest_slot) | ||||||
|         ); |         ); | ||||||
|  |  | ||||||
|         print_count_and_status("daccounts", &daccounts); |         print_count_and_status("daccounts", &daccounts); | ||||||
| @@ -2242,14 +2239,14 @@ pub mod tests { | |||||||
|         db.add_root(some_slot); |         db.add_root(some_slot); | ||||||
|         assert_matches!(db.verify_bank_hash(some_slot, &ancestors), Ok(_)); |         assert_matches!(db.verify_bank_hash(some_slot, &ancestors), Ok(_)); | ||||||
|  |  | ||||||
|         db.slot_hashes.write().unwrap().remove(&some_slot).unwrap(); |         db.bank_hashes.write().unwrap().remove(&some_slot).unwrap(); | ||||||
|         assert_matches!( |         assert_matches!( | ||||||
|             db.verify_bank_hash(some_slot, &ancestors), |             db.verify_bank_hash(some_slot, &ancestors), | ||||||
|             Err(MissingBankHash) |             Err(MissingBankHash) | ||||||
|         ); |         ); | ||||||
|  |  | ||||||
|         let some_bank_hash = BankHash::from_hash(&Hash::new(&[0xca; HASH_BYTES])); |         let some_bank_hash = BankHash::from_hash(&Hash::new(&[0xca; HASH_BYTES])); | ||||||
|         db.slot_hashes |         db.bank_hashes | ||||||
|             .write() |             .write() | ||||||
|             .unwrap() |             .unwrap() | ||||||
|             .insert(some_slot, some_bank_hash); |             .insert(some_slot, some_bank_hash); | ||||||
| @@ -2267,7 +2264,7 @@ pub mod tests { | |||||||
|         let some_slot: Slot = 0; |         let some_slot: Slot = 0; | ||||||
|         let ancestors = vec![(some_slot, 0)].into_iter().collect(); |         let ancestors = vec![(some_slot, 0)].into_iter().collect(); | ||||||
|  |  | ||||||
|         db.slot_hashes |         db.bank_hashes | ||||||
|             .write() |             .write() | ||||||
|             .unwrap() |             .unwrap() | ||||||
|             .insert(some_slot, BankHash::default()); |             .insert(some_slot, BankHash::default()); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user