diff --git a/src/ledger/LedgerManager.h b/src/ledger/LedgerManager.h index 004e68d2ca..7c11237d9f 100644 --- a/src/ledger/LedgerManager.h +++ b/src/ledger/LedgerManager.h @@ -128,6 +128,7 @@ class LedgerManager // Ledger txn here is needed for the sake of lazy load; it won't be // used most of the time. virtual SorobanNetworkConfig const& getSorobanNetworkConfig() = 0; + virtual bool hasSorobanNetworkConfig() const = 0; #ifdef BUILD_TESTS virtual SorobanNetworkConfig& getMutableSorobanNetworkConfig() = 0; diff --git a/src/ledger/LedgerManagerImpl.cpp b/src/ledger/LedgerManagerImpl.cpp index 421b0777e0..0b46727390 100644 --- a/src/ledger/LedgerManagerImpl.cpp +++ b/src/ledger/LedgerManagerImpl.cpp @@ -540,6 +540,12 @@ LedgerManagerImpl::getSorobanNetworkConfig() return getSorobanNetworkConfigInternal(); } +bool +LedgerManagerImpl::hasSorobanNetworkConfig() const +{ + return mSorobanNetworkConfig.has_value(); +} + #ifdef BUILD_TESTS SorobanNetworkConfig& LedgerManagerImpl::getMutableSorobanNetworkConfig() diff --git a/src/ledger/LedgerManagerImpl.h b/src/ledger/LedgerManagerImpl.h index 7c074c2057..16b7e811d2 100644 --- a/src/ledger/LedgerManagerImpl.h +++ b/src/ledger/LedgerManagerImpl.h @@ -146,6 +146,7 @@ class LedgerManagerImpl : public LedgerManager uint32_t getLastTxFee() const override; uint32_t getLastClosedLedgerNum() const override; SorobanNetworkConfig const& getSorobanNetworkConfig() override; + bool hasSorobanNetworkConfig() const override; #ifdef BUILD_TESTS SorobanNetworkConfig& getMutableSorobanNetworkConfig() override; diff --git a/src/main/ApplicationImpl.cpp b/src/main/ApplicationImpl.cpp index 436de6bae1..a2889c5ae3 100644 --- a/src/main/ApplicationImpl.cpp +++ b/src/main/ApplicationImpl.cpp @@ -471,8 +471,7 @@ ApplicationImpl::getJsonInfo(bool verbose) info["ledger"]["baseFee"] = lcl.header.baseFee; info["ledger"]["baseReserve"] = lcl.header.baseReserve; info["ledger"]["maxTxSetSize"] = lcl.header.maxTxSetSize; - if (protocolVersionStartsFrom(lcl.header.ledgerVersion, - SOROBAN_PROTOCOL_VERSION)) + if (lm.hasSorobanNetworkConfig()) { info["ledger"]["maxSorobanTxSetSize"] = static_cast(lm.maxLedgerResources(/* isSoroban */ true) @@ -551,13 +550,15 @@ ApplicationImpl::getJsonInfo(bool verbose) void ApplicationImpl::reportInfo(bool verbose) { - mLedgerManager->loadLastKnownLedger(nullptr); - LedgerTxn ltx(getLedgerTxnRoot()); - if (protocolVersionStartsFrom(ltx.loadHeader().current().ledgerVersion, - SOROBAN_PROTOCOL_VERSION)) - { - getLedgerManager().updateNetworkConfig(ltx); - } + auto loadConfig = [this]() { + LedgerTxn ltx(getLedgerTxnRoot()); + if (protocolVersionStartsFrom(ltx.loadHeader().current().ledgerVersion, + SOROBAN_PROTOCOL_VERSION)) + { + getLedgerManager().updateNetworkConfig(ltx); + } + }; + mLedgerManager->loadLastKnownLedger(loadConfig); LOG_INFO(DEFAULT_LOG, "Reporting application info"); std::cout << getJsonInfo(verbose).toStyledString() << std::endl; } diff --git a/src/main/CommandHandler.cpp b/src/main/CommandHandler.cpp index 81dddd25a3..c19a53730e 100644 --- a/src/main/CommandHandler.cpp +++ b/src/main/CommandHandler.cpp @@ -740,9 +740,7 @@ CommandHandler::sorobanInfo(std::string const& params, std::string& retStr) ZoneScoped; auto& lm = mApp.getLedgerManager(); - if (protocolVersionStartsFrom( - lm.getLastClosedLedgerHeader().header.ledgerVersion, - SOROBAN_PROTOCOL_VERSION)) + if (lm.hasSorobanNetworkConfig()) { std::map retMap; http::server::server::parseParams(params, retMap); diff --git a/src/main/test/ApplicationUtilsTests.cpp b/src/main/test/ApplicationUtilsTests.cpp index 4cb8f5a8cd..068a39a42b 100644 --- a/src/main/test/ApplicationUtilsTests.cpp +++ b/src/main/test/ApplicationUtilsTests.cpp @@ -630,16 +630,7 @@ TEST_CASE("application setup", "[applicationutils]") Config cfg2 = getTestConfig(2); cfg2.setInMemoryMode(); cfg2.DATABASE = SecretValue{minimalDBForInMemoryMode(cfg2)}; - - SECTION("BucketListDB") - { - cfg2.EXPERIMENTAL_BUCKETLIST_DB = true; - testInMemoryMode(cfg1, cfg2); - } - SECTION("SQL DB") - { - testInMemoryMode(cfg1, cfg2); - } + testInMemoryMode(cfg1, cfg2); } }