From feed960ef3732023c32a76812cede7d86ae40908 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 5 Sep 2020 03:31:35 +0000 Subject: [PATCH] Bigtable bug fixes (#12058) (#12060) * Accommodate stricted get_bincode_cell in get_confirmed_signatures_for_address * Sort signatures newest-oldest, even within slot (cherry picked from commit 879c98efeb793fc51b37657f36ff1abf42779d40) Co-authored-by: Tyera Eulberg --- storage-bigtable/src/lib.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/storage-bigtable/src/lib.rs b/storage-bigtable/src/lib.rs index 00fe352e60..0c2afc820b 100644 --- a/storage-bigtable/src/lib.rs +++ b/storage-bigtable/src/lib.rs @@ -397,12 +397,14 @@ impl LedgerStorage { let mut infos = vec![]; - let starting_slot_tx_by_addr_infos = bigtable + let starting_slot_tx_len = bigtable .get_bincode_cell::>( "tx-by-addr", format!("{}{}", address_prefix, slot_to_key(!first_slot)), ) - .await?; + .await + .map(|txs| txs.len()) + .unwrap_or(0); // Return the next tx-by-addr data of amount `limit` plus extra to account for the largest // number that might be flitered out @@ -411,7 +413,7 @@ impl LedgerStorage { "tx-by-addr", Some(format!("{}{}", address_prefix, slot_to_key(!first_slot))), Some(format!("{}{}", address_prefix, slot_to_key(!last_slot))), - limit as i64 + starting_slot_tx_by_addr_infos.len() as i64, + limit as i64 + starting_slot_tx_len as i64, ) .await?; @@ -422,8 +424,9 @@ impl LedgerStorage { row_key )) })?; - let cell_data: Vec = + let mut cell_data: Vec = bigtable::deserialize_cell_data(&data, "tx-by-addr", row_key)?; + cell_data.reverse(); for tx_by_addr_info in cell_data.into_iter() { // Filter out records before `before_transaction_index` if slot == first_slot && tx_by_addr_info.index >= before_transaction_index {