mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Handle mLedgersByIndex better.
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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 ()
|
||||
|
||||
@@ -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();
|
||||
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user