mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-20 11:05:54 +00:00
Begin replacing old logic with new.
This commit is contained in:
@@ -1302,7 +1302,7 @@ void LedgerConsensus::accept (SHAMap::ref set, LoadEvent::pointer)
|
|||||||
WriteLog (lsDEBUG, LedgerConsensus) << "Applying transactions from current open ledger";
|
WriteLog (lsDEBUG, LedgerConsensus) << "Applying transactions from current open ledger";
|
||||||
applyTransactions (getApp().getLedgerMaster ().getCurrentLedger ()->peekTransactionMap (), newOL, newLCL,
|
applyTransactions (getApp().getLedgerMaster ().getCurrentLedger ()->peekTransactionMap (), newOL, newLCL,
|
||||||
failedTransactions, true);
|
failedTransactions, true);
|
||||||
getApp().getLedgerMaster ().pushLedger (newLCL, newOL, !mConsensusFail);
|
getApp().getLedgerMaster ().pushLedger (newLCL, newOL);
|
||||||
mNewLedgerHash = newLCL->getHash ();
|
mNewLedgerHash = newLCL->getHash ();
|
||||||
mState = lcsACCEPTED;
|
mState = lcsACCEPTED;
|
||||||
sl.unlock ();
|
sl.unlock ();
|
||||||
|
|||||||
@@ -504,9 +504,9 @@ uint256 Ledger::getHash ()
|
|||||||
return mHash;
|
return mHash;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Ledger::saveAcceptedLedger (Job&, bool fromConsensus)
|
void Ledger::saveValidatedLedger (bool current)
|
||||||
{
|
{
|
||||||
WriteLog (lsTRACE, Ledger) << "saveAcceptedLedger " << (fromConsensus ? "fromConsensus " : "fromAcquire ") << getLedgerSeq ();
|
WriteLog (lsTRACE, Ledger) << "saveValidatedLedger " << (current ? "" : "fromAcquire ") << getLedgerSeq ();
|
||||||
static boost::format deleteLedger ("DELETE FROM Ledgers WHERE LedgerSeq = %u;");
|
static boost::format deleteLedger ("DELETE FROM Ledgers WHERE LedgerSeq = %u;");
|
||||||
static boost::format deleteTrans1 ("DELETE FROM Transactions WHERE LedgerSeq = %u;");
|
static boost::format deleteTrans1 ("DELETE FROM Transactions WHERE LedgerSeq = %u;");
|
||||||
static boost::format deleteTrans2 ("DELETE FROM AccountTransactions WHERE LedgerSeq = %u;");
|
static boost::format deleteTrans2 ("DELETE FROM AccountTransactions WHERE LedgerSeq = %u;");
|
||||||
@@ -527,7 +527,7 @@ void Ledger::saveAcceptedLedger (Job&, bool fromConsensus)
|
|||||||
if (getAccountHash () != mAccountStateMap->getHash ())
|
if (getAccountHash () != mAccountStateMap->getHash ())
|
||||||
{
|
{
|
||||||
WriteLog (lsFATAL, Ledger) << "sAL: " << getAccountHash () << " != " << mAccountStateMap->getHash ();
|
WriteLog (lsFATAL, Ledger) << "sAL: " << getAccountHash () << " != " << mAccountStateMap->getHash ();
|
||||||
WriteLog (lsFATAL, Ledger) << "saveAcceptedLedger: seq=" << mLedgerSeq << ", fromcons=" << fromConsensus;
|
WriteLog (lsFATAL, Ledger) << "saveAcceptedLedger: seq=" << mLedgerSeq << ", current=" << current;
|
||||||
assert (false);
|
assert (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -612,9 +612,6 @@ void Ledger::saveAcceptedLedger (Job&, bool fromConsensus)
|
|||||||
mCloseResolution % mCloseFlags % mAccountHash.GetHex () % mTransHash.GetHex ()));
|
mCloseResolution % mCloseFlags % mAccountHash.GetHex () % mTransHash.GetHex ()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!fromConsensus && (getConfig ().NODE_SIZE < 2)) // tiny or small
|
|
||||||
dropCache ();
|
|
||||||
|
|
||||||
{ // Clients can now trust the database for information about this ledger sequence
|
{ // Clients can now trust the database for information about this ledger sequence
|
||||||
boost::mutex::scoped_lock sl (sPendingSaveLock);
|
boost::mutex::scoped_lock sl (sPendingSaveLock);
|
||||||
sPendingSaves.erase(getLedgerSeq());
|
sPendingSaves.erase(getLedgerSeq());
|
||||||
@@ -1817,24 +1814,32 @@ uint32 Ledger::roundCloseTime (uint32 closeTime, uint32 closeResolution)
|
|||||||
return closeTime - (closeTime % closeResolution);
|
return closeTime - (closeTime % closeResolution);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Ledger::pendSave (bool fromConsensus)
|
bool Ledger::pendSaveValidated (bool isSynchronous, bool isCurrent)
|
||||||
{
|
{
|
||||||
if (!fromConsensus && !getApp().getHashRouter ().setFlag (getHash (), SF_SAVED))
|
if (!getApp().getHashRouter ().setFlag (getHash (), SF_SAVED))
|
||||||
return;
|
return false;
|
||||||
|
|
||||||
assert (isImmutable ());
|
assert (isImmutable ());
|
||||||
|
|
||||||
{
|
{
|
||||||
boost::mutex::scoped_lock sl (sPendingSaveLock);
|
boost::mutex::scoped_lock sl (sPendingSaveLock);
|
||||||
if (!sPendingSaves.insert(getLedgerSeq()).second)
|
if (!sPendingSaves.insert(getLedgerSeq()).second)
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
getApp().getJobQueue ().addJob (
|
if (isSynchronous)
|
||||||
fromConsensus ? jtPUBLEDGER : jtPUBOLDLEDGER,
|
{
|
||||||
fromConsensus ? "Ledger::pendSave" : "Ledger::pendOldSave",
|
saveValidatedLedger(isCurrent);
|
||||||
BIND_TYPE (&Ledger::saveAcceptedLedger, shared_from_this (), P_1, fromConsensus));
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
getApp().getJobQueue ().addJob (
|
||||||
|
isCurrent ? jtPUBLEDGER : jtPUBOLDLEDGER,
|
||||||
|
isCurrent ? "Ledger::pendSave" : "Ledger::pendOldSave",
|
||||||
|
BIND_TYPE (&Ledger::saveValidatedLedgerAsync, shared_from_this (), P_1, isCurrent));
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::set<uint32> Ledger::getPendingSaves()
|
std::set<uint32> Ledger::getPendingSaves()
|
||||||
|
|||||||
@@ -236,7 +236,7 @@ public:
|
|||||||
static uint256 getHashByIndex (uint32 index);
|
static uint256 getHashByIndex (uint32 index);
|
||||||
static bool getHashesByIndex (uint32 index, uint256 & ledgerHash, uint256 & parentHash);
|
static bool getHashesByIndex (uint32 index, uint256 & ledgerHash, uint256 & parentHash);
|
||||||
static std::map< uint32, std::pair<uint256, uint256> > getHashesByIndex (uint32 minSeq, uint32 maxSeq);
|
static std::map< uint32, std::pair<uint256, uint256> > getHashesByIndex (uint32 minSeq, uint32 maxSeq);
|
||||||
void pendSave (bool fromConsensus);
|
bool pendSaveValidated (bool isSynchronous, bool isCurrent);
|
||||||
|
|
||||||
// next/prev function
|
// next/prev function
|
||||||
SLE::pointer getSLE (uint256 const & uHash); // SLE is mutable
|
SLE::pointer getSLE (uint256 const & uHash); // SLE is mutable
|
||||||
@@ -435,7 +435,11 @@ protected:
|
|||||||
// returned SLE is immutable
|
// returned SLE is immutable
|
||||||
SLE::pointer getASNodeI (uint256 const & nodeID, LedgerEntryType let);
|
SLE::pointer getASNodeI (uint256 const & nodeID, LedgerEntryType let);
|
||||||
|
|
||||||
void saveAcceptedLedger (Job&, bool fromConsensus);
|
void saveValidatedLedgerAsync(Job&, bool current)
|
||||||
|
{
|
||||||
|
saveValidatedLedger(current);
|
||||||
|
}
|
||||||
|
void saveValidatedLedger (bool current);
|
||||||
|
|
||||||
void updateFees ();
|
void updateFees ();
|
||||||
|
|
||||||
|
|||||||
@@ -93,21 +93,18 @@ void LedgerMaster::pushLedger (Ledger::pointer newLedger)
|
|||||||
|
|
||||||
boost::recursive_mutex::scoped_lock ml (mLock);
|
boost::recursive_mutex::scoped_lock ml (mLock);
|
||||||
|
|
||||||
if (!mPubLedger)
|
if (mClosedLedger)
|
||||||
mPubLedger = newLedger;
|
|
||||||
|
|
||||||
if (!!mFinalizedLedger)
|
|
||||||
{
|
{
|
||||||
mFinalizedLedger->setClosed ();
|
mClosedLedger->setClosed ();
|
||||||
WriteLog (lsTRACE, LedgerMaster) << "Finalizes: " << mFinalizedLedger->getHash ();
|
WriteLog (lsTRACE, LedgerMaster) << "Finalizes: " << mClosedLedger->getHash ();
|
||||||
}
|
}
|
||||||
|
|
||||||
mFinalizedLedger = mCurrentLedger;
|
mClosedLedger = mCurrentLedger;
|
||||||
mCurrentLedger = newLedger;
|
mCurrentLedger = newLedger;
|
||||||
mEngine.setLedger (newLedger);
|
mEngine.setLedger (newLedger);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LedgerMaster::pushLedger (Ledger::pointer newLCL, Ledger::pointer newOL, bool fromConsensus)
|
void LedgerMaster::pushLedger (Ledger::pointer newLCL, Ledger::pointer newOL)
|
||||||
{
|
{
|
||||||
assert (newLCL->isClosed () && newLCL->isAccepted ());
|
assert (newLCL->isClosed () && newLCL->isAccepted ());
|
||||||
assert (!newOL->isClosed () && !newOL->isAccepted ());
|
assert (!newOL->isClosed () && !newOL->isAccepted ());
|
||||||
@@ -118,13 +115,13 @@ void LedgerMaster::pushLedger (Ledger::pointer newLCL, Ledger::pointer newOL, bo
|
|||||||
{
|
{
|
||||||
assert (newLCL->isClosed ());
|
assert (newLCL->isClosed ());
|
||||||
assert (newLCL->isImmutable ());
|
assert (newLCL->isImmutable ());
|
||||||
mLedgerHistory.addAcceptedLedger (newLCL, fromConsensus);
|
mLedgerHistory.addAcceptedLedger (newLCL);
|
||||||
WriteLog (lsINFO, LedgerMaster) << "StashAccepted: " << newLCL->getHash ();
|
WriteLog (lsINFO, LedgerMaster) << "StashAccepted: " << newLCL->getHash ();
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
boost::recursive_mutex::scoped_lock ml (mLock);
|
boost::recursive_mutex::scoped_lock ml (mLock);
|
||||||
mFinalizedLedger = newLCL;
|
mClosedLedger = newLCL;
|
||||||
mCurrentLedger = newOL;
|
mCurrentLedger = newOL;
|
||||||
mEngine.setLedger (newOL);
|
mEngine.setLedger (newOL);
|
||||||
}
|
}
|
||||||
@@ -138,9 +135,9 @@ void LedgerMaster::switchLedgers (Ledger::pointer lastClosed, Ledger::pointer cu
|
|||||||
|
|
||||||
{
|
{
|
||||||
boost::recursive_mutex::scoped_lock ml (mLock);
|
boost::recursive_mutex::scoped_lock ml (mLock);
|
||||||
mFinalizedLedger = lastClosed;
|
mClosedLedger = lastClosed;
|
||||||
mFinalizedLedger->setClosed ();
|
mClosedLedger->setClosed ();
|
||||||
mFinalizedLedger->setAccepted ();
|
mClosedLedger->setAccepted ();
|
||||||
mCurrentLedger = current;
|
mCurrentLedger = current;
|
||||||
|
|
||||||
assert (!mCurrentLedger->isClosed ());
|
assert (!mCurrentLedger->isClosed ());
|
||||||
@@ -154,7 +151,7 @@ void LedgerMaster::storeLedger (Ledger::pointer ledger)
|
|||||||
mLedgerHistory.addLedger (ledger);
|
mLedgerHistory.addLedger (ledger);
|
||||||
|
|
||||||
if (ledger->isAccepted ())
|
if (ledger->isAccepted ())
|
||||||
mLedgerHistory.addAcceptedLedger (ledger, false);
|
mLedgerHistory.addAcceptedLedger (ledger);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LedgerMaster::forceValid (Ledger::pointer ledger)
|
void LedgerMaster::forceValid (Ledger::pointer ledger)
|
||||||
@@ -344,8 +341,9 @@ void LedgerMaster::asyncAccept (Ledger::pointer ledger)
|
|||||||
resumeAcquiring ();
|
resumeAcquiring ();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LedgerMaster::acquireMissingLedger (Ledger::ref origLedger, uint256 const& ledgerHash, uint32 ledgerSeq)
|
void LedgerMaster::acquireMissingLedger (Ledger::ref origLedger, uint256 const& ledgerHash, uint32 ledgerSeq)
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
// return: false = already gave up recently
|
// return: false = already gave up recently
|
||||||
Ledger::pointer ledger = mLedgerHistory.getLedgerBySeq (ledgerSeq);
|
Ledger::pointer ledger = mLedgerHistory.getLedgerBySeq (ledgerSeq);
|
||||||
|
|
||||||
@@ -383,12 +381,6 @@ bool LedgerMaster::acquireMissingLedger (Ledger::ref origLedger, uint256 const&
|
|||||||
|
|
||||||
mMissingSeq = ledgerSeq;
|
mMissingSeq = ledgerSeq;
|
||||||
|
|
||||||
if (mMissingLedger->setAccept ())
|
|
||||||
{
|
|
||||||
if (!mMissingLedger->addOnComplete (BIND_TYPE (&LedgerMaster::missingAcquireComplete, this, P_1)))
|
|
||||||
getApp().getIOService ().post (BIND_TYPE (&LedgerMaster::missingAcquireComplete, this, mMissingLedger));
|
|
||||||
}
|
|
||||||
|
|
||||||
int fetchMax = getConfig ().getSize (siLedgerFetch);
|
int fetchMax = getConfig ().getSize (siLedgerFetch);
|
||||||
int timeoutCount;
|
int timeoutCount;
|
||||||
int fetchCount = getApp().getInboundLedgers ().getFetchCount (timeoutCount);
|
int fetchCount = getApp().getInboundLedgers ().getFetchCount (timeoutCount);
|
||||||
@@ -462,10 +454,13 @@ bool LedgerMaster::acquireMissingLedger (Ledger::ref origLedger, uint256 const&
|
|||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void LedgerMaster::missingAcquireComplete (InboundLedger::pointer acq)
|
void LedgerMaster::missingAcquireComplete (InboundLedger::pointer acq)
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
boost::recursive_mutex::scoped_lock ml (mLock);
|
boost::recursive_mutex::scoped_lock ml (mLock);
|
||||||
|
|
||||||
if (acq->isFailed () && (mMissingSeq != 0))
|
if (acq->isFailed () && (mMissingSeq != 0))
|
||||||
@@ -482,6 +477,7 @@ void LedgerMaster::missingAcquireComplete (InboundLedger::pointer acq)
|
|||||||
setFullLedger (acq->getLedger ());
|
setFullLedger (acq->getLedger ());
|
||||||
mLedgerHistory.addAcceptedLedger (acq->getLedger (), false);
|
mLedgerHistory.addAcceptedLedger (acq->getLedger (), false);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LedgerMaster::shouldAcquire (uint32 currentLedger, uint32 ledgerHistory, uint32 candidateLedger)
|
bool LedgerMaster::shouldAcquire (uint32 currentLedger, uint32 ledgerHistory, uint32 candidateLedger)
|
||||||
@@ -518,7 +514,7 @@ void LedgerMaster::resumeAcquiring ()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 prevMissing = mCompleteLedgers.prevMissing (mFinalizedLedger->getLedgerSeq ());
|
uint32 prevMissing = mCompleteLedgers.prevMissing (mClosedLedger->getLedgerSeq ());
|
||||||
|
|
||||||
if (prevMissing == RangeSet::absent)
|
if (prevMissing == RangeSet::absent)
|
||||||
{
|
{
|
||||||
@@ -573,7 +569,7 @@ void LedgerMaster::fixMismatch (Ledger::ref ledger)
|
|||||||
CondLog (invalidate != 0, lsWARNING, LedgerMaster) << "All " << invalidate << " prior ledgers invalidated";
|
CondLog (invalidate != 0, lsWARNING, LedgerMaster) << "All " << invalidate << " prior ledgers invalidated";
|
||||||
}
|
}
|
||||||
|
|
||||||
void LedgerMaster::setFullLedger (Ledger::pointer ledger)
|
void LedgerMaster::setFullLedger (Ledger::pointer ledger, bool isSynchronous, bool isCurrent)
|
||||||
{
|
{
|
||||||
// A new ledger has been accepted as part of the trusted chain
|
// A new ledger has been accepted as part of the trusted chain
|
||||||
WriteLog (lsDEBUG, LedgerMaster) << "Ledger " << ledger->getLedgerSeq () << " accepted :" << ledger->getHash ();
|
WriteLog (lsDEBUG, LedgerMaster) << "Ledger " << ledger->getLedgerSeq () << " accepted :" << ledger->getHash ();
|
||||||
@@ -587,7 +583,7 @@ void LedgerMaster::setFullLedger (Ledger::pointer ledger)
|
|||||||
mCompleteLedgers.setValue (ledger->getLedgerSeq ());
|
mCompleteLedgers.setValue (ledger->getLedgerSeq ());
|
||||||
|
|
||||||
if (Ledger::getHashByIndex (ledger->getLedgerSeq ()) != ledger->getHash ())
|
if (Ledger::getHashByIndex (ledger->getLedgerSeq ()) != ledger->getHash ())
|
||||||
ledger->pendSave (false);
|
ledger->pendSaveValidated (isSynchronous, isCurrent);
|
||||||
|
|
||||||
if ((ledger->getLedgerSeq () != 0) && mCompleteLedgers.hasValue (ledger->getLedgerSeq () - 1))
|
if ((ledger->getLedgerSeq () != 0) && mCompleteLedgers.hasValue (ledger->getLedgerSeq () - 1))
|
||||||
{
|
{
|
||||||
@@ -780,7 +776,7 @@ void LedgerMaster::tryPublish ()
|
|||||||
|
|
||||||
if (!acq->isDone ())
|
if (!acq->isDone ())
|
||||||
{
|
{
|
||||||
acq->setAccept ();
|
nothing ();
|
||||||
}
|
}
|
||||||
else if (acq->isComplete () && !acq->isFailed ())
|
else if (acq->isComplete () && !acq->isFailed ())
|
||||||
{
|
{
|
||||||
@@ -791,7 +787,7 @@ void LedgerMaster::tryPublish ()
|
|||||||
WriteLog (lsWARNING, LedgerMaster) << "Failed to acquire a published ledger";
|
WriteLog (lsWARNING, LedgerMaster) << "Failed to acquire a published ledger";
|
||||||
getApp().getInboundLedgers().dropLedger(hash);
|
getApp().getInboundLedgers().dropLedger(hash);
|
||||||
acq = getApp().getInboundLedgers().findCreate(hash, seq);
|
acq = getApp().getInboundLedgers().findCreate(hash, seq);
|
||||||
acq->setAccept();
|
nothing ();
|
||||||
if (acq->isDone())
|
if (acq->isDone())
|
||||||
ledger = acq->getLedger();
|
ledger = acq->getLedger();
|
||||||
}
|
}
|
||||||
@@ -885,7 +881,7 @@ void LedgerMaster::pubThread ()
|
|||||||
BOOST_FOREACH (Ledger::ref l, ledgers)
|
BOOST_FOREACH (Ledger::ref l, ledgers)
|
||||||
{
|
{
|
||||||
WriteLog (lsDEBUG, LedgerMaster) << "Publishing ledger " << l->getLedgerSeq ();
|
WriteLog (lsDEBUG, LedgerMaster) << "Publishing ledger " << l->getLedgerSeq ();
|
||||||
setFullLedger (l); // OPTIMIZEME: This is actually more work than we need to do
|
setFullLedger (l, true, true);
|
||||||
getApp().getOPs ().pubLedger (l);
|
getApp().getOPs ().pubLedger (l);
|
||||||
published = true;
|
published = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ public:
|
|||||||
// The finalized ledger is the last closed/accepted ledger
|
// The finalized ledger is the last closed/accepted ledger
|
||||||
Ledger::ref getClosedLedger ()
|
Ledger::ref getClosedLedger ()
|
||||||
{
|
{
|
||||||
return mFinalizedLedger;
|
return mClosedLedger;
|
||||||
}
|
}
|
||||||
|
|
||||||
// The validated ledger is the last fully validated ledger
|
// The validated ledger is the last fully validated ledger
|
||||||
@@ -86,11 +86,11 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void pushLedger (Ledger::pointer newLedger);
|
void pushLedger (Ledger::pointer newLedger);
|
||||||
void pushLedger (Ledger::pointer newLCL, Ledger::pointer newOL, bool fromConsensus);
|
void pushLedger (Ledger::pointer newLCL, Ledger::pointer newOL);
|
||||||
void storeLedger (Ledger::pointer);
|
void storeLedger (Ledger::pointer);
|
||||||
void forceValid (Ledger::pointer);
|
void forceValid (Ledger::pointer);
|
||||||
|
|
||||||
void setFullLedger (Ledger::pointer ledger);
|
void setFullLedger (Ledger::pointer ledger, bool isSynchronous, bool isCurrent);
|
||||||
|
|
||||||
void switchLedgers (Ledger::pointer lastClosed, Ledger::pointer newCurrent);
|
void switchLedgers (Ledger::pointer lastClosed, Ledger::pointer newCurrent);
|
||||||
|
|
||||||
@@ -117,8 +117,8 @@ public:
|
|||||||
if (mCurrentLedger && (mCurrentLedger->getLedgerSeq () == index))
|
if (mCurrentLedger && (mCurrentLedger->getLedgerSeq () == index))
|
||||||
return mCurrentLedger;
|
return mCurrentLedger;
|
||||||
|
|
||||||
if (mFinalizedLedger && (mFinalizedLedger->getLedgerSeq () == index))
|
if (mClosedLedger && (mClosedLedger->getLedgerSeq () == index))
|
||||||
return mFinalizedLedger;
|
return mClosedLedger;
|
||||||
|
|
||||||
Ledger::pointer ret = mLedgerHistory.getLedgerBySeq (index);
|
Ledger::pointer ret = mLedgerHistory.getLedgerBySeq (index);
|
||||||
|
|
||||||
@@ -138,8 +138,8 @@ public:
|
|||||||
if (mCurrentLedger && (mCurrentLedger->getHash () == hash))
|
if (mCurrentLedger && (mCurrentLedger->getHash () == hash))
|
||||||
return boost::make_shared<Ledger> (boost::ref (*mCurrentLedger), false);
|
return boost::make_shared<Ledger> (boost::ref (*mCurrentLedger), false);
|
||||||
|
|
||||||
if (mFinalizedLedger && (mFinalizedLedger->getHash () == hash))
|
if (mClosedLedger && (mClosedLedger->getHash () == hash))
|
||||||
return mFinalizedLedger;
|
return mClosedLedger;
|
||||||
|
|
||||||
return mLedgerHistory.getLedgerByHash (hash);
|
return mLedgerHistory.getLedgerByHash (hash);
|
||||||
}
|
}
|
||||||
@@ -191,7 +191,7 @@ private:
|
|||||||
bool isValidTransaction (Transaction::ref trans);
|
bool isValidTransaction (Transaction::ref trans);
|
||||||
bool isTransactionOnFutureList (Transaction::ref trans);
|
bool isTransactionOnFutureList (Transaction::ref trans);
|
||||||
|
|
||||||
bool acquireMissingLedger (Ledger::ref from, uint256 const& ledgerHash, uint32 ledgerSeq);
|
void acquireMissingLedger (Ledger::ref from, uint256 const& ledgerHash, uint32 ledgerSeq);
|
||||||
void asyncAccept (Ledger::pointer);
|
void asyncAccept (Ledger::pointer);
|
||||||
void missingAcquireComplete (InboundLedger::pointer);
|
void missingAcquireComplete (InboundLedger::pointer);
|
||||||
void pubThread ();
|
void pubThread ();
|
||||||
@@ -204,7 +204,7 @@ private:
|
|||||||
|
|
||||||
Ledger::pointer mCurrentLedger; // The ledger we are currently processiong
|
Ledger::pointer mCurrentLedger; // The ledger we are currently processiong
|
||||||
Ledger::pointer mCurrentSnapshot; // Snapshot of the current ledger
|
Ledger::pointer mCurrentSnapshot; // Snapshot of the current ledger
|
||||||
Ledger::pointer mFinalizedLedger; // The ledger that most recently closed
|
Ledger::pointer mClosedLedger; // The ledger that most recently closed
|
||||||
Ledger::pointer mValidLedger; // The highest-sequence ledger we have fully accepted
|
Ledger::pointer mValidLedger; // The highest-sequence ledger we have fully accepted
|
||||||
Ledger::pointer mPubLedger; // The last ledger we have published
|
Ledger::pointer mPubLedger; // The last ledger we have published
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ InboundLedger::InboundLedger (uint256 const& hash, uint32 seq)
|
|||||||
, mHaveTransactions (false)
|
, mHaveTransactions (false)
|
||||||
, mAborted (false)
|
, mAborted (false)
|
||||||
, mSignaled (false)
|
, mSignaled (false)
|
||||||
, mAccept (false)
|
|
||||||
, mByHash (true)
|
, mByHash (true)
|
||||||
, mWaitCount (0)
|
, mWaitCount (0)
|
||||||
, mSeq (seq)
|
, mSeq (seq)
|
||||||
@@ -267,10 +266,6 @@ void InboundLedger::done ()
|
|||||||
{
|
{
|
||||||
mLedger->setClosed ();
|
mLedger->setClosed ();
|
||||||
mLedger->setImmutable ();
|
mLedger->setImmutable ();
|
||||||
|
|
||||||
if (mAccept)
|
|
||||||
mLedger->setAccepted ();
|
|
||||||
|
|
||||||
getApp().getLedgerMaster ().storeLedger (mLedger);
|
getApp().getLedgerMaster ().storeLedger (mLedger);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -56,17 +56,6 @@ public:
|
|||||||
return mSeq;
|
return mSeq;
|
||||||
}
|
}
|
||||||
|
|
||||||
// VFALCO NOTE what is the meaning of the return value?
|
|
||||||
bool setAccept ()
|
|
||||||
{
|
|
||||||
if (mAccept)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
mAccept = true;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// VFALCO TODO Make thise the Listener / Observer pattern
|
// VFALCO TODO Make thise the Listener / Observer pattern
|
||||||
bool addOnComplete (FUNCTION_TYPE<void (InboundLedger::pointer)>);
|
bool addOnComplete (FUNCTION_TYPE<void (InboundLedger::pointer)>);
|
||||||
|
|
||||||
@@ -112,7 +101,6 @@ private:
|
|||||||
bool mHaveTransactions;
|
bool mHaveTransactions;
|
||||||
bool mAborted;
|
bool mAborted;
|
||||||
bool mSignaled;
|
bool mSignaled;
|
||||||
bool mAccept;
|
|
||||||
bool mByHash;
|
bool mByHash;
|
||||||
beast::Atomic<int> mWaitCount;
|
beast::Atomic<int> mWaitCount;
|
||||||
uint32 mSeq;
|
uint32 mSeq;
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ void LedgerHistory::addLedger (Ledger::pointer ledger)
|
|||||||
mLedgersByHash.canonicalize (ledger->getHash (), ledger, true);
|
mLedgersByHash.canonicalize (ledger->getHash (), ledger, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LedgerHistory::addAcceptedLedger (Ledger::pointer ledger, bool fromConsensus)
|
void LedgerHistory::addAcceptedLedger (Ledger::pointer ledger)
|
||||||
{
|
{
|
||||||
assert (ledger && ledger->isAccepted () && ledger->isImmutable ());
|
assert (ledger && ledger->isAccepted () && ledger->isImmutable ());
|
||||||
assert (ledger->peekAccountStateMap ()->getHash ().isNonZero ());
|
assert (ledger->peekAccountStateMap ()->getHash ().isNonZero ());
|
||||||
@@ -37,9 +37,6 @@ void LedgerHistory::addAcceptedLedger (Ledger::pointer ledger, bool fromConsensu
|
|||||||
assert (ledger);
|
assert (ledger);
|
||||||
assert (ledger->isAccepted ());
|
assert (ledger->isAccepted ());
|
||||||
assert (ledger->isImmutable ());
|
assert (ledger->isImmutable ());
|
||||||
mLedgersByIndex[ledger->getLedgerSeq ()] = ledger->getHash ();
|
|
||||||
|
|
||||||
ledger->pendSave (fromConsensus);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint256 LedgerHistory::getLedgerHash (uint32 index)
|
uint256 LedgerHistory::getLedgerHash (uint32 index)
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ public:
|
|||||||
|
|
||||||
void addLedger (Ledger::pointer ledger);
|
void addLedger (Ledger::pointer ledger);
|
||||||
|
|
||||||
void addAcceptedLedger (Ledger::pointer ledger, bool fromConsensus);
|
void addAcceptedLedger (Ledger::pointer ledger);
|
||||||
|
|
||||||
float getCacheHitRate ()
|
float getCacheHitRate ()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -815,7 +815,7 @@ void ApplicationImp::startNewLedger ()
|
|||||||
Ledger::pointer secondLedger = boost::make_shared<Ledger> (true, boost::ref (*firstLedger));
|
Ledger::pointer secondLedger = boost::make_shared<Ledger> (true, boost::ref (*firstLedger));
|
||||||
secondLedger->setClosed ();
|
secondLedger->setClosed ();
|
||||||
secondLedger->setAccepted ();
|
secondLedger->setAccepted ();
|
||||||
mLedgerMaster.pushLedger (secondLedger, boost::make_shared<Ledger> (true, boost::ref (*secondLedger)), false);
|
mLedgerMaster.pushLedger (secondLedger, boost::make_shared<Ledger> (true, boost::ref (*secondLedger)));
|
||||||
assert (!!secondLedger->getAccountState (rootAddress));
|
assert (!!secondLedger->getAccountState (rootAddress));
|
||||||
mNetOps->setLastCloseTime (secondLedger->getCloseTimeNC ());
|
mNetOps->setLastCloseTime (secondLedger->getCloseTimeNC ());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1272,7 +1272,7 @@ NetworkOPs::getAccountTxs (const RippleAddress& account, int32 minLedger, int32
|
|||||||
WriteLog(lsWARNING, NetworkOPs) << "Recovering ledger " << seq << ", txn " << txn->getID();
|
WriteLog(lsWARNING, NetworkOPs) << "Recovering ledger " << seq << ", txn " << txn->getID();
|
||||||
Ledger::pointer ledger = getLedgerBySeq(seq);
|
Ledger::pointer ledger = getLedgerBySeq(seq);
|
||||||
if (ledger)
|
if (ledger)
|
||||||
ledger->pendSave(false);
|
ledger->pendSaveValidated(false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
TransactionMetaSet::pointer meta = boost::make_shared<TransactionMetaSet> (txn->getID (), txn->getLedger (), rawMeta.getData ());
|
TransactionMetaSet::pointer meta = boost::make_shared<TransactionMetaSet> (txn->getID (), txn->getLedger (), rawMeta.getData ());
|
||||||
|
|||||||
Reference in New Issue
Block a user