From 14fb246b67334ff55033622f6848eb0afd48dbaa Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Mon, 30 Sep 2013 17:34:36 -0700 Subject: [PATCH] Handle mLedgersByIndex better. --- src/ripple_app/ledger/LedgerHistory.cpp | 31 ++----------------------- src/ripple_app/ledger/LedgerHistory.h | 5 +--- src/ripple_app/ledger/LedgerMaster.cpp | 4 ++-- 3 files changed, 5 insertions(+), 35 deletions(-) diff --git a/src/ripple_app/ledger/LedgerHistory.cpp b/src/ripple_app/ledger/LedgerHistory.cpp index 011e153c7..487a59969 100644 --- a/src/ripple_app/ledger/LedgerHistory.cpp +++ b/src/ripple_app/ledger/LedgerHistory.cpp @@ -37,7 +37,7 @@ LedgerHistory::LedgerHistory () ; } -void LedgerHistory::addLedger (Ledger::pointer ledger) +void LedgerHistory::addLedger (Ledger::pointer ledger, bool validated) { assert (ledger && ledger->isImmutable ()); assert (ledger->peekAccountStateMap ()->getHash ().isNonZero ()); @@ -45,7 +45,7 @@ void LedgerHistory::addLedger (Ledger::pointer ledger) TaggedCache::ScopedLockType sl (mLedgersByHash.peekMutex (), __FILE__, __LINE__); mLedgersByHash.canonicalize (ledger->getHash(), ledger, true); - if (ledger->isValidated()) + if (validated) mLedgersByIndex[ledger->getLedgerSeq()] = ledger->getHash(); } @@ -57,7 +57,6 @@ uint256 LedgerHistory::getLedgerHash (uint32 index) if (it != mLedgersByIndex.end ()) return it->second; - sl.unlock (); return uint256 (); } @@ -113,32 +112,6 @@ Ledger::pointer LedgerHistory::getLedgerByHash (uint256 const& hash) return ret; } -Ledger::pointer LedgerHistory::canonicalizeLedger (Ledger::pointer ledger, bool save) -{ - assert (ledger->isImmutable ()); - uint256 h (ledger->getHash ()); - - if (!save) - { - // return input ledger if not in map, otherwise, return corresponding map ledger - Ledger::pointer ret = mLedgersByHash.fetch (h); - - if (ret) - return ret; - - return ledger; - } - - // save input ledger in map if not in map, otherwise return corresponding map ledger - TaggedCache::ScopedLockType sl (mLedgersByHash.peekMutex (), __FILE__, __LINE__); - mLedgersByHash.canonicalize (h, ledger); - - if (ledger->isValidated ()) - mLedgersByIndex[ledger->getLedgerSeq ()] = ledger->getHash (); - - return ledger; -} - void LedgerHistory::builtLedger (Ledger::ref ledger) { LedgerIndex index = ledger->getLedgerSeq(); diff --git a/src/ripple_app/ledger/LedgerHistory.h b/src/ripple_app/ledger/LedgerHistory.h index b167dcdaf..3100bdafc 100644 --- a/src/ripple_app/ledger/LedgerHistory.h +++ b/src/ripple_app/ledger/LedgerHistory.h @@ -27,7 +27,7 @@ class LedgerHistory : LeakChecked public: LedgerHistory (); - void addLedger (Ledger::pointer ledger); + void addLedger (Ledger::pointer ledger, bool validated); float getCacheHitRate () { @@ -36,13 +36,10 @@ public: Ledger::pointer getLedgerBySeq (LedgerIndex ledgerIndex); - // VFALCO NOTE shouldn't this call the function above? LedgerHash getLedgerHash (LedgerIndex ledgerIndex); Ledger::pointer getLedgerByHash (LedgerHash const& ledgerHash); - Ledger::pointer canonicalizeLedger (Ledger::pointer ledger, bool cache); - void tune (int size, int age); void sweep () diff --git a/src/ripple_app/ledger/LedgerMaster.cpp b/src/ripple_app/ledger/LedgerMaster.cpp index aeeab9e6b..0bdc30598 100644 --- a/src/ripple_app/ledger/LedgerMaster.cpp +++ b/src/ripple_app/ledger/LedgerMaster.cpp @@ -187,7 +187,7 @@ void LedgerMaster::switchLedgers (Ledger::pointer lastClosed, Ledger::pointer cu void LedgerMaster::storeLedger (Ledger::pointer ledger) { - mLedgerHistory.addLedger (ledger); + mLedgerHistory.addLedger (ledger, false); } void LedgerMaster::forceValid (Ledger::pointer ledger) @@ -494,7 +494,7 @@ void LedgerMaster::setFullLedger (Ledger::pointer ledger, bool isSynchronous, bo assert (ledger->peekAccountStateMap ()->getHash ().isNonZero ()); ledger->setValidated(); - mLedgerHistory.addLedger(ledger); + mLedgerHistory.addLedger(ledger, true); ledger->setFull(); {