Handle mLedgersByIndex better.

This commit is contained in:
JoelKatz
2013-09-30 17:34:36 -07:00
parent 99e4335f00
commit 14fb246b67
3 changed files with 5 additions and 35 deletions

View File

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

View File

@@ -27,7 +27,7 @@ class LedgerHistory : LeakChecked <LedgerHistory>
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 ()

View File

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