From 773cd91f1bff8da6f097203c38881924d29d7000 Mon Sep 17 00:00:00 2001 From: Colin LeMahieu Date: Sat, 16 Mar 2024 19:13:51 +0000 Subject: [PATCH] Rewrite epoch_upgrader in terms of receivable iterators. --- nano/node/epoch_upgrader.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/nano/node/epoch_upgrader.cpp b/nano/node/epoch_upgrader.cpp index 58db6213d..495d09dc5 100644 --- a/nano/node/epoch_upgrader.cpp +++ b/nano/node/epoch_upgrader.cpp @@ -210,14 +210,13 @@ void nano::epoch_upgrader::upgrade_impl (nano::raw_key const & prv_a, nano::epoc std::atomic upgraded_pending (0); uint64_t workers (0); uint64_t attempts (0); - auto transaction (store.tx_begin_read ()); - for (auto i (store.pending.begin (transaction, nano::pending_key (1, 0))), n (store.pending.end ()); i != n && attempts < upgrade_batch_size && attempts < count_limit && !stopped;) + auto transaction = store.tx_begin_read (); + for (auto current = ledger.receivable_upper_bound (transaction, 0), end = ledger.receivable_end (); current != end && attempts < upgrade_batch_size && attempts < count_limit && !stopped;) { bool to_next_account (false); - nano::pending_key const & key (i->first); + auto const & [key, info] = *current; if (!store.account.exists (transaction, key.account)) { - nano::pending_info const & info (i->second); if (info.epoch < epoch_a) { ++attempts; @@ -272,13 +271,13 @@ void nano::epoch_upgrader::upgrade_impl (nano::raw_key const & prv_a, nano::epoc } else { - i = store.pending.begin (transaction, nano::pending_key (key.account.number () + 1, 0)); + current = ledger.receivable_upper_bound (transaction, key.account); } } else { // Move to next pending item - ++i; + current = ledger.receivable_upper_bound (transaction, key.account, key.hash); } } {