From c8bb13b3f72e56f60a8f81204aa5641a4a85dc1d Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 5 Apr 2021 05:27:58 +0000 Subject: [PATCH] Fixup AncestorIterator method (bp #16357) (#16359) * Fixup iterator method (#16357) (cherry picked from commit 1a13d22984452fe6fd6351e0b4cffc3cb65d1a4e) * Only get Blockstore::last_root once (#16362) Co-authored-by: Tyera Eulberg --- ledger/src/blockstore.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ledger/src/blockstore.rs b/ledger/src/blockstore.rs index 01920ffc0d..ea8ebca69b 100644 --- a/ledger/src/blockstore.rs +++ b/ledger/src/blockstore.rs @@ -2053,9 +2053,10 @@ impl Blockstore { "blockstore-rpc-api", ("method", "get_complete_transaction".to_string(), String) ); + let last_root = self.last_root(); let confirmed_unrooted_slots: Vec<_> = AncestorIterator::new_inclusive(highest_confirmed_slot, self) - .filter(|&slot| slot > self.last_root()) + .take_while(|&slot| slot > last_root) .collect(); self.get_transaction_with_status(signature, &confirmed_unrooted_slots) } @@ -2213,8 +2214,9 @@ impl Blockstore { String ) ); + let last_root = self.last_root(); let confirmed_unrooted_slots: Vec<_> = AncestorIterator::new_inclusive(highest_slot, self) - .filter(|&slot| slot > self.last_root()) + .take_while(|&slot| slot > last_root) .collect(); // Figure the `slot` to start listing signatures at, based on the ledger location of the