diff --git a/src/ripple/app/ledger/LedgerMaster.h b/src/ripple/app/ledger/LedgerMaster.h index 5fa835a9ba..67a49712ae 100644 --- a/src/ripple/app/ledger/LedgerMaster.h +++ b/src/ripple/app/ledger/LedgerMaster.h @@ -54,6 +54,10 @@ class Transaction; class LedgerMaster : public Stoppable, public AbstractFetchPackContainer { public: + // Age for last validated ledger if the process has yet to validate. + static constexpr std::chrono::seconds NO_VALIDATED_LEDGER_AGE = + std::chrono::hours{24 * 14}; + explicit LedgerMaster( Application& app, Stopwatch& stopwatch, diff --git a/src/ripple/app/ledger/impl/LedgerMaster.cpp b/src/ripple/app/ledger/impl/LedgerMaster.cpp index f189340b94..da23bf12dd 100644 --- a/src/ripple/app/ledger/impl/LedgerMaster.cpp +++ b/src/ripple/app/ledger/impl/LedgerMaster.cpp @@ -269,7 +269,7 @@ LedgerMaster::getValidatedLedgerAge() if (valClose == 0s) { JLOG(m_journal.debug()) << "No validated ledger"; - return weeks{2}; + return NO_VALIDATED_LEDGER_AGE; } std::chrono::seconds ret = app_.timeKeeper().closeTime().time_since_epoch(); diff --git a/src/ripple/app/misc/NetworkOPs.cpp b/src/ripple/app/misc/NetworkOPs.cpp index 66d01b791e..5c3aadc0ec 100644 --- a/src/ripple/app/misc/NetworkOPs.cpp +++ b/src/ripple/app/misc/NetworkOPs.cpp @@ -2757,16 +2757,24 @@ NetworkOPsImp::getServerInfo(bool human, bool admin, bool counters) if (std::abs(closeOffset.count()) >= 60) l[jss::close_time_offset] = closeOffset.count(); - auto lCloseTime = lpClosed->info().closeTime; - auto closeTime = app_.timeKeeper().closeTime(); - if (lCloseTime <= closeTime) + constexpr std::chrono::seconds HIGH_AGE_THRESHOLD{1000000}; + if (m_ledgerMaster.haveValidated()) { - using namespace std::chrono_literals; - auto age = closeTime - lCloseTime; - if (age < 1000000s) - l[jss::age] = Json::UInt(age.count()); - else - l[jss::age] = 0; + auto const age = m_ledgerMaster.getValidatedLedgerAge(); + l[jss::age] = + Json::UInt(age < HIGH_AGE_THRESHOLD ? age.count() : 0); + } + else + { + auto lCloseTime = lpClosed->info().closeTime; + auto closeTime = app_.timeKeeper().closeTime(); + if (lCloseTime <= closeTime) + { + using namespace std::chrono_literals; + auto age = closeTime - lCloseTime; + l[jss::age] = + Json::UInt(age < HIGH_AGE_THRESHOLD ? age.count() : 0); + } } }