diff --git a/include/xrpl/basics/TaggedCache.ipp b/include/xrpl/basics/TaggedCache.ipp index 9dc495218e..9b7a72d255 100644 --- a/include/xrpl/basics/TaggedCache.ipp +++ b/include/xrpl/basics/TaggedCache.ipp @@ -3,6 +3,7 @@ #include #include // IWYU pragma: keep #include +#include namespace xrpl { @@ -673,6 +674,10 @@ TaggedCache(); canonicalize(key, entry, [](SharedPointerType const&) { return false; }); + XRPL_ASSERT( + entry != nullptr, + "xrpl::TaggedCache::fetchAndModify : entry present after canonicalize"); + callback(*entry); } diff --git a/src/xrpld/app/ledger/LedgerHistory.cpp b/src/xrpld/app/ledger/LedgerHistory.cpp index 731d1295f5..27b9e7a507 100644 --- a/src/xrpld/app/ledger/LedgerHistory.cpp +++ b/src/xrpld/app/ledger/LedgerHistory.cpp @@ -504,6 +504,9 @@ LedgerHistory::validatedLedger( consensusValidated_.fetchAndModify(index, [&](CvEntry& entry) { if (entry.built && !entry.validated) { + XRPL_ASSERT( + entry.consensus.has_value(), + "xrpl::LedgerHistory::validatedLedger : consensus set when built set"); if (entry.built.value() != hash) { JLOG(j_.error()) << "MISMATCH: seq=" << index << " built:" << entry.built.value() @@ -597,6 +600,10 @@ LedgerHistory::clearLedgerCachePrior(LedgerIndex seq) } } indexSize = lock->byIndex.size(); + + XRPL_ASSERT( + lock->byIndex.empty() || lock->byIndex.begin()->first >= seq, + "xrpl::LedgerHistory::clearLedgerCachePrior : byIndex pruned to seq"); } JLOG(j_.debug()) << "LedgersByHash: cleared " << hashesCleared << " entries before seq " << seq