From ce7607b687a0fa471dbf6c5c5d4ced64d33babfb Mon Sep 17 00:00:00 2001 From: Michael Vines <mvines@gmail.com> Date: Mon, 20 Apr 2020 13:25:12 -0700 Subject: [PATCH 1/2] Add more columns to analyze-storage subcommand --- ledger-tool/src/main.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ledger-tool/src/main.rs b/ledger-tool/src/main.rs index 0220fda8e05065..40b87e8915ebac 100644 --- a/ledger-tool/src/main.rs +++ b/ledger-tool/src/main.rs @@ -499,6 +499,17 @@ fn analyze_storage(database: &Database) -> Result<(), String> { "TransactionStatus", TransactionStatus::key_size(), )?; + analyze_column::<TransactionStatus>( + database, + "TransactionStatusIndex", + TransactionStatusIndex::key_size(), + )?; + analyze_column::<AddressSignatures>( + database, + "AddressSignatures", + AddressSignatures::key_size(), + )?; + analyze_column::<Rewards>(database, "Rewards", Rewards::key_size())?; Ok(()) } From 122f3b92bfee694c6cb0d5b1519ad4be5d3cc167 Mon Sep 17 00:00:00 2001 From: Michael Vines <mvines@gmail.com> Date: Mon, 20 Apr 2020 13:31:16 -0700 Subject: [PATCH 2/2] Fail gracefully if older AddressSignatures rocksdb keys are present --- ledger/src/blockstore_db.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/ledger/src/blockstore_db.rs b/ledger/src/blockstore_db.rs index 9f6519d4ba1fb7..9614ebdb1d2cef 100644 --- a/ledger/src/blockstore_db.rs +++ b/ledger/src/blockstore_db.rs @@ -368,11 +368,15 @@ impl Column for columns::AddressSignatures { } fn index(key: &[u8]) -> (u64, Pubkey, Slot, Signature) { - let index = BigEndian::read_u64(&key[0..8]); - let pubkey = Pubkey::new(&key[8..40]); - let slot = BigEndian::read_u64(&key[40..48]); - let signature = Signature::new(&key[48..112]); - (index, pubkey, slot, signature) + if key.len() != 112 { + (0, Pubkey::default(), 0, Signature::default()) + } else { + let index = BigEndian::read_u64(&key[0..8]); + let pubkey = Pubkey::new(&key[8..40]); + let slot = BigEndian::read_u64(&key[40..48]); + let signature = Signature::new(&key[48..112]); + (index, pubkey, slot, signature) + } } fn primary_index(index: Self::Index) -> u64 {