Improve reporting of ledger age in server_info

This commit is contained in:
Mark Travis
2020-03-28 17:39:48 -07:00
committed by Nik Bougalis
parent df29e98ea5
commit 00702f28c2
3 changed files with 22 additions and 10 deletions

View File

@@ -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,

View File

@@ -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();

View File

@@ -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);
}
}
}