Sfoglia il codice sorgente

Removes MerkleOrLatticeAccountsHash enum (#7039)

Brooks 4 mesi fa
parent
commit
092ec6b14a

+ 0 - 9
accounts-db/src/accounts_hash.rs

@@ -1246,15 +1246,6 @@ pub const ZERO_LAMPORT_ACCOUNT_LT_HASH: AccountLtHash = AccountLtHash(LtHash::id
 #[derive(Debug, Clone, Eq, PartialEq)]
 pub struct AccountsLtHash(pub LtHash);
 
-/// Hash of accounts
-#[derive(Debug, Clone, Eq, PartialEq)]
-pub enum MerkleOrLatticeAccountsHash {
-    /// Merkle-based hash of accounts
-    Merkle(AccountsHashKind),
-    /// Lattice-based hash of accounts
-    Lattice,
-}
-
 /// Hash of accounts
 #[derive(Debug, Copy, Clone, Eq, PartialEq)]
 pub enum AccountsHashKind {

+ 3 - 13
core/src/accounts_hash_verifier.rs

@@ -3,7 +3,6 @@
 use {
     crate::snapshot_packager_service::PendingSnapshotPackages,
     crossbeam_channel::{Receiver, Sender},
-    solana_accounts_db::accounts_hash::MerkleOrLatticeAccountsHash,
     solana_clock::DEFAULT_MS_PER_SLOT,
     solana_measure::measure_us,
     solana_runtime::{
@@ -178,12 +177,7 @@ impl AccountsHashVerifier {
     ) -> io::Result<()> {
         Self::purge_old_accounts_hashes(&accounts_package, snapshot_config);
 
-        Self::submit_for_packaging(
-            accounts_package,
-            pending_snapshot_packages,
-            MerkleOrLatticeAccountsHash::Lattice,
-            None,
-        );
+        Self::submit_for_packaging(accounts_package, pending_snapshot_packages, None);
 
         Ok(())
     }
@@ -222,7 +216,6 @@ impl AccountsHashVerifier {
     fn submit_for_packaging(
         accounts_package: AccountsPackage,
         pending_snapshot_packages: &Mutex<PendingSnapshotPackages>,
-        merkle_or_lattice_accounts_hash: MerkleOrLatticeAccountsHash,
         bank_incremental_snapshot_persistence: Option<BankIncrementalSnapshotPersistence>,
     ) {
         if !matches!(
@@ -232,11 +225,8 @@ impl AccountsHashVerifier {
             return;
         }
 
-        let snapshot_package = SnapshotPackage::new(
-            accounts_package,
-            merkle_or_lattice_accounts_hash,
-            bank_incremental_snapshot_persistence,
-        );
+        let snapshot_package =
+            SnapshotPackage::new(accounts_package, bank_incremental_snapshot_persistence);
         pending_snapshot_packages
             .lock()
             .unwrap()

+ 2 - 5
runtime/src/bank.rs

@@ -80,7 +80,7 @@ use {
         },
         accounts_hash::{
             AccountsHash, AccountsLtHash, CalcAccountsHashConfig, HashStats,
-            IncrementalAccountsHash, MerkleOrLatticeAccountsHash,
+            IncrementalAccountsHash,
         },
         accounts_index::{IndexKey, ScanConfig, ScanResult},
         accounts_update_notifier_interface::AccountsUpdateNotifier,
@@ -4809,10 +4809,7 @@ impl Bank {
     ///
     /// This fn is used at startup to verify the bank was rebuilt correctly.
     pub fn get_snapshot_hash(&self) -> SnapshotHash {
-        SnapshotHash::new(
-            &MerkleOrLatticeAccountsHash::Lattice,
-            Some(self.accounts_lt_hash.lock().unwrap().0.checksum()),
-        )
+        SnapshotHash::new(Some(self.accounts_lt_hash.lock().unwrap().0.checksum()))
     }
 
     pub fn load_account_into_read_cache(&self, key: &Pubkey) {

+ 2 - 11
runtime/src/snapshot_bank_utils.rs

@@ -39,7 +39,6 @@ use {
     log::*,
     solana_accounts_db::{
         accounts_db::{AccountStorageEntry, AccountsDbConfig, AtomicAccountsFileId},
-        accounts_hash::MerkleOrLatticeAccountsHash,
         accounts_update_notifier_interface::AccountsUpdateNotifier,
         utils::remove_dir_contents,
     },
@@ -789,7 +788,6 @@ fn bank_to_full_snapshot_archive_with(
     bank.force_flush_accounts_cache();
     bank.clean_accounts();
 
-    let merkle_or_lattice_accounts_hash = MerkleOrLatticeAccountsHash::Lattice;
     let snapshot_storages = bank.get_snapshot_storages(None);
     let status_cache_slot_deltas = bank.status_cache.read().unwrap().root_slot_deltas();
     let accounts_package = AccountsPackage::new_for_snapshot(
@@ -798,8 +796,7 @@ fn bank_to_full_snapshot_archive_with(
         snapshot_storages,
         status_cache_slot_deltas,
     );
-    let snapshot_package =
-        SnapshotPackage::new(accounts_package, merkle_or_lattice_accounts_hash, None);
+    let snapshot_package = SnapshotPackage::new(accounts_package, None);
 
     let snapshot_config = SnapshotConfig {
         full_snapshot_archives_dir: full_snapshot_archives_dir.as_ref().to_path_buf(),
@@ -849,8 +846,6 @@ pub fn bank_to_incremental_snapshot_archive(
     bank.force_flush_accounts_cache();
     bank.clean_accounts();
 
-    let (merkle_or_lattice_accounts_hash, bank_incremental_snapshot_persistence) =
-        (MerkleOrLatticeAccountsHash::Lattice, None);
     let snapshot_storages = bank.get_snapshot_storages(Some(full_snapshot_slot));
     let status_cache_slot_deltas = bank.status_cache.read().unwrap().root_slot_deltas();
     let accounts_package = AccountsPackage::new_for_snapshot(
@@ -859,11 +854,7 @@ pub fn bank_to_incremental_snapshot_archive(
         snapshot_storages,
         status_cache_slot_deltas,
     );
-    let snapshot_package = SnapshotPackage::new(
-        accounts_package,
-        merkle_or_lattice_accounts_hash,
-        bank_incremental_snapshot_persistence,
-    );
+    let snapshot_package = SnapshotPackage::new(accounts_package, None);
 
     // Note: Since the snapshot_storages above are *only* the incremental storages,
     // this bank snapshot *cannot* be used by fastboot.

+ 7 - 13
runtime/src/snapshot_hash.rs

@@ -1,7 +1,7 @@
 //! Helper types and functions for handling and dealing with snapshot hashes.
 use {
-    solana_accounts_db::accounts_hash::MerkleOrLatticeAccountsHash, solana_clock::Slot,
-    solana_hash::Hash, solana_lattice_hash::lt_hash::Checksum as AccountsLtHashChecksum,
+    solana_clock::Slot, solana_hash::Hash,
+    solana_lattice_hash::lt_hash::Checksum as AccountsLtHashChecksum,
 };
 
 /// At startup, when loading from snapshots, the starting snapshot hashes need to be passed to
@@ -32,19 +32,13 @@ impl SnapshotHash {
     /// Make a snapshot hash from accounts hashes
     #[must_use]
     pub fn new(
-        merkle_or_lattice_accounts_hash: &MerkleOrLatticeAccountsHash,
         accounts_lt_hash_checksum: Option<AccountsLtHashChecksum>, // option wrapper will be removed next
     ) -> Self {
-        let accounts_hash = match merkle_or_lattice_accounts_hash {
-            MerkleOrLatticeAccountsHash::Merkle(accounts_hash_kind) => {
-                *accounts_hash_kind.as_hash()
-            }
-            MerkleOrLatticeAccountsHash::Lattice => Hash::new_from_array(
-                accounts_lt_hash_checksum
-                    .expect("lattice kind must have lt hash checksum")
-                    .0,
-            ),
-        };
+        let accounts_hash = Hash::new_from_array(
+            accounts_lt_hash_checksum
+                .expect("lattice kind must have lt hash checksum")
+                .0,
+        );
         Self(accounts_hash)
     }
 }

+ 10 - 38
runtime/src/snapshot_package.rs

@@ -8,9 +8,7 @@ use {
     solana_accounts_db::{
         accounts::Accounts,
         accounts_db::AccountStorageEntry,
-        accounts_hash::{
-            AccountsDeltaHash, AccountsHash, AccountsHashKind, MerkleOrLatticeAccountsHash,
-        },
+        accounts_hash::{AccountsDeltaHash, AccountsHash},
     },
     solana_clock::Slot,
     solana_epoch_schedule::EpochSchedule,
@@ -173,7 +171,7 @@ pub struct SnapshotPackage {
     pub accounts_delta_hash: AccountsDeltaHash, // obsolete, will be removed next
     pub accounts_hash: AccountsHash,
     pub write_version: u64,
-    pub bank_incremental_snapshot_persistence: Option<BankIncrementalSnapshotPersistence>,
+    pub bank_incremental_snapshot_persistence: Option<BankIncrementalSnapshotPersistence>, // obsolete, will be removed next
 
     /// The instant this snapshot package was sent to the queue.
     /// Used to track how long snapshot packages wait before handling.
@@ -183,7 +181,6 @@ pub struct SnapshotPackage {
 impl SnapshotPackage {
     pub fn new(
         accounts_package: AccountsPackage,
-        merkle_or_lattice_accounts_hash: MerkleOrLatticeAccountsHash,
         bank_incremental_snapshot_persistence: Option<BankIncrementalSnapshotPersistence>,
     ) -> Self {
         let AccountsPackageKind::Snapshot(snapshot_kind) = accounts_package.package_kind;
@@ -193,48 +190,23 @@ impl SnapshotPackage {
             );
         };
 
-        let accounts_hash = match merkle_or_lattice_accounts_hash {
-            MerkleOrLatticeAccountsHash::Merkle(accounts_hash_kind) => {
-                match accounts_hash_kind {
-                    AccountsHashKind::Full(accounts_hash) => accounts_hash,
-                    AccountsHashKind::Incremental(_) => {
-                        // The accounts hash is only needed when serializing a full snapshot.
-                        // When serializing an incremental snapshot, there will not be a full accounts hash
-                        // at `slot`.  In that case, use the default, because it doesn't actually get used.
-                        // The incremental snapshot will use the BankIncrementalSnapshotPersistence
-                        // field, so ensure it is Some.
-                        assert!(bank_incremental_snapshot_persistence.is_some());
-                        AccountsHash(Hash::default())
-                    }
-                }
-            }
-            MerkleOrLatticeAccountsHash::Lattice => {
-                // This is the merkle-based accounts hash, which isn't used in the Lattice case,
-                // so any value is fine here.
-                AccountsHash(Hash::default())
-            }
-        };
-
         Self {
             snapshot_kind,
             slot: accounts_package.slot,
             block_height: accounts_package.block_height,
-            hash: SnapshotHash::new(
-                &merkle_or_lattice_accounts_hash,
-                Some(
-                    snapshot_info
-                        .bank_fields_to_serialize
-                        .accounts_lt_hash
-                        .0
-                        .checksum(),
-                ),
-            ),
+            hash: SnapshotHash::new(Some(
+                snapshot_info
+                    .bank_fields_to_serialize
+                    .accounts_lt_hash
+                    .0
+                    .checksum(),
+            )),
             snapshot_storages: accounts_package.snapshot_storages,
             status_cache_slot_deltas: snapshot_info.status_cache_slot_deltas,
             bank_fields_to_serialize: snapshot_info.bank_fields_to_serialize,
             accounts_delta_hash: snapshot_info.accounts_delta_hash,
             bank_hash_stats: snapshot_info.bank_hash_stats,
-            accounts_hash,
+            accounts_hash: AccountsHash(Hash::default()), // obsolete, will be removed next
             bank_incremental_snapshot_persistence,
             write_version: snapshot_info.write_version,
             enqueued: Instant::now(),