diff --git a/src/ripple/app/rdb/backend/RWDBDatabase.h b/src/ripple/app/rdb/backend/RWDBDatabase.h index 3981691bc..4f97d1468 100644 --- a/src/ripple/app/rdb/backend/RWDBDatabase.h +++ b/src/ripple/app/rdb/backend/RWDBDatabase.h @@ -65,9 +65,12 @@ public: return {}; std::shared_lock lock(mutex_); - if (transactionMap_.empty()) - return std::nullopt; - return transactionMap_.begin()->second.second->getLgrSeq(); + for (const auto& [ledgerSeq, ledgerData] : ledgers_) + { + if (!ledgerData.transactions.empty()) + return ledgerSeq; + } + return std::nullopt; } std::optional diff --git a/src/test/app/SHAMapStore_test.cpp b/src/test/app/SHAMapStore_test.cpp index 010c83a42..8a3ca0f89 100644 --- a/src/test/app/SHAMapStore_test.cpp +++ b/src/test/app/SHAMapStore_test.cpp @@ -216,6 +216,10 @@ public: } BEAST_EXPECT(store.getLastRotated() == lastRotated); + SQLiteDatabase* const db = + dynamic_cast(&env.app().getRelationalDatabase()); + BEAST_EXPECT(*db->getTransactionsMinLedgerSeq() == 3); + for (auto i = 3; i < deleteInterval + lastRotated; ++i) { ledgers.emplace(