diff --git a/src/Ledger.cpp b/src/Ledger.cpp index 4626eb691..9bfafeb46 100644 --- a/src/Ledger.cpp +++ b/src/Ledger.cpp @@ -977,9 +977,29 @@ uint256 Ledger::getRippleStateIndex(const NewcoinAddress& naA, const NewcoinAddr bool Ledger::walkLedger() { std::vector missingNodes; - mAccountStateMap->walkMap(missingNodes, 1); - mTransactionMap->walkMap(missingNodes, 1); + mAccountStateMap->walkMap(missingNodes, 6); + if (sLog(lsINFO) && !missingNodes.empty()) + { + Log(lsINFO) << missingNodes.size() << " missing account nodes"; + Log(lsINFO) << "First: " << missingNodes[0]; + } + mTransactionMap->walkMap(missingNodes, 6); return missingNodes.empty(); } +bool Ledger::assertSane() +{ + if (mHash.isNonZero() && mAccountHash.isNonZero() && mAccountStateMap && mTransactionMap && + (mAccountHash == mAccountStateMap->getHash()) && (mTransHash == mTransactionMap->getHash())) + return true; + + Log(lsFATAL) << "ledger is not sane"; + Json::Value j = getJson(0); + j["accountTreeHash"] = mAccountHash.GetHex(); + j["transTreeHash"] = mTransHash.GetHex(); + + assert(false); + return false; +} + // vim:ts=4 diff --git a/src/Ledger.h b/src/Ledger.h index a467fab2e..0c201d12f 100644 --- a/src/Ledger.h +++ b/src/Ledger.h @@ -282,6 +282,7 @@ public: void addJson(Json::Value&, int options); bool walkLedger(); + bool assertSane(); static bool unitTest(); };