mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-27 14:35:52 +00:00
Don't immediately retry a failed acquire.
This commit is contained in:
@@ -150,17 +150,20 @@ void LedgerMaster::asyncAccept(Ledger::pointer ledger)
|
|||||||
resumeAcquiring();
|
resumeAcquiring();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LedgerMaster::acquireMissingLedger(const uint256& ledgerHash, uint32 ledgerSeq)
|
bool LedgerMaster::acquireMissingLedger(const uint256& ledgerHash, uint32 ledgerSeq)
|
||||||
{
|
{ // return: false = already gave up recently
|
||||||
Ledger::pointer ledger = Ledger::loadByIndex(ledgerSeq);
|
Ledger::pointer ledger = Ledger::loadByIndex(ledgerSeq);
|
||||||
if (ledger && (ledger->getHash() == ledgerHash))
|
if (ledger && (ledger->getHash() == ledgerHash))
|
||||||
{
|
{
|
||||||
cLog(lsDEBUG) << "Ledger found is database, doing async accept";
|
cLog(lsDEBUG) << "Ledger found is database, doing async accept";
|
||||||
mTooFast = true;
|
mTooFast = true;
|
||||||
theApp->getJobQueue().addJob(jtPUBLEDGER, boost::bind(&LedgerMaster::asyncAccept, this, ledger));
|
theApp->getJobQueue().addJob(jtPUBLEDGER, boost::bind(&LedgerMaster::asyncAccept, this, ledger));
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (theApp->getMasterLedgerAcquire().isFailure(ledgerHash))
|
||||||
|
return false;
|
||||||
|
|
||||||
mMissingLedger = theApp->getMasterLedgerAcquire().findCreate(ledgerHash);
|
mMissingLedger = theApp->getMasterLedgerAcquire().findCreate(ledgerHash);
|
||||||
if (mMissingLedger->isComplete())
|
if (mMissingLedger->isComplete())
|
||||||
{
|
{
|
||||||
@@ -168,16 +171,17 @@ void LedgerMaster::acquireMissingLedger(const uint256& ledgerHash, uint32 ledger
|
|||||||
if (lgr && (lgr->getLedgerSeq() == ledgerSeq))
|
if (lgr && (lgr->getLedgerSeq() == ledgerSeq))
|
||||||
missingAcquireComplete(mMissingLedger);
|
missingAcquireComplete(mMissingLedger);
|
||||||
mMissingLedger.reset();
|
mMissingLedger.reset();
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
else if (mMissingLedger->isDone())
|
else if (mMissingLedger->isDone())
|
||||||
{
|
{
|
||||||
mMissingLedger.reset();
|
mMissingLedger.reset();
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
mMissingSeq = ledgerSeq;
|
mMissingSeq = ledgerSeq;
|
||||||
if (mMissingLedger->setAccept())
|
if (mMissingLedger->setAccept())
|
||||||
mMissingLedger->addOnComplete(boost::bind(&LedgerMaster::missingAcquireComplete, this, _1));
|
mMissingLedger->addOnComplete(boost::bind(&LedgerMaster::missingAcquireComplete, this, _1));
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LedgerMaster::missingAcquireComplete(LedgerAcquire::pointer acq)
|
void LedgerMaster::missingAcquireComplete(LedgerAcquire::pointer acq)
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ protected:
|
|||||||
bool isValidTransaction(const Transaction::pointer& trans);
|
bool isValidTransaction(const Transaction::pointer& trans);
|
||||||
bool isTransactionOnFutureList(const Transaction::pointer& trans);
|
bool isTransactionOnFutureList(const Transaction::pointer& trans);
|
||||||
|
|
||||||
void acquireMissingLedger(const uint256& ledgerHash, uint32 ledgerSeq);
|
bool acquireMissingLedger(const uint256& ledgerHash, uint32 ledgerSeq);
|
||||||
void asyncAccept(Ledger::pointer);
|
void asyncAccept(Ledger::pointer);
|
||||||
void missingAcquireComplete(LedgerAcquire::pointer);
|
void missingAcquireComplete(LedgerAcquire::pointer);
|
||||||
void pubThread();
|
void pubThread();
|
||||||
|
|||||||
Reference in New Issue
Block a user