From 0fd5f98c9cb19f98ca2073fb8673cd1104caa9b7 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Sat, 13 Jul 2013 19:32:20 -0700 Subject: [PATCH] Clean up some confusion about the last validated ledger versus the last published ledger. --- src/cpp/ripple/LedgerMaster.cpp | 19 ++++++++++++++++++- src/cpp/ripple/LedgerMaster.h | 10 +++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/cpp/ripple/LedgerMaster.cpp b/src/cpp/ripple/LedgerMaster.cpp index 6e3a1ca26..c7c1036aa 100644 --- a/src/cpp/ripple/LedgerMaster.cpp +++ b/src/cpp/ripple/LedgerMaster.cpp @@ -23,6 +23,23 @@ Ledger::ref LedgerMaster::getCurrentSnapshot () return mCurrentSnapshot; } +int LedgerMaster::getPublishedLedgerAge () +{ + boost::recursive_mutex::scoped_lock ml (mLock); + if (!mPubLedger) + { + WriteLog (lsDEBUG, LedgerMaster) << "No published ledger"; + return 999999; + } + + int64 ret = getApp().getOPs ().getCloseTimeNC (); + ret -= static_cast (mPubLedger->getCloseTimeNC ()); + ret = std::max (0LL, ret); + + WriteLog (lsTRACE, LedgerMaster) << "Published ledger age is " << ret; + return static_cast (ret); +} + int LedgerMaster::getValidatedLedgerAge () { boost::recursive_mutex::scoped_lock ml (mLock); @@ -42,7 +59,7 @@ int LedgerMaster::getValidatedLedgerAge () bool LedgerMaster::isCaughtUp(std::string& reason) { - if (getValidatedLedgerAge() > 180) + if (getPublishedLedgerAge() > 180) { reason = "No recently-validated ledger"; return false; diff --git a/src/cpp/ripple/LedgerMaster.h b/src/cpp/ripple/LedgerMaster.h index 4df10d0eb..d000566ae 100644 --- a/src/cpp/ripple/LedgerMaster.h +++ b/src/cpp/ripple/LedgerMaster.h @@ -58,11 +58,19 @@ public: return mFinalizedLedger; } - // The published ledger is the last fully validated ledger + // The validated ledger is the last fully validated ledger Ledger::ref getValidatedLedger () + { + return mValidLedger; + } + + // This is the last ledger we published to clients and can lag the validated ledger + Ledger::ref getPublishedLedger () { return mPubLedger; } + + int getPublishedLedgerAge (); int getValidatedLedgerAge (); bool isCaughtUp(std::string& reason);