Don't immediately retry a failed acquire.

This commit is contained in:
JoelKatz
2013-01-07 08:57:41 -08:00
parent 6624e31d5a
commit 2b479a66c1
2 changed files with 10 additions and 6 deletions

View File

@@ -150,17 +150,20 @@ void LedgerMaster::asyncAccept(Ledger::pointer ledger)
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);
if (ledger && (ledger->getHash() == ledgerHash))
{
cLog(lsDEBUG) << "Ledger found is database, doing async accept";
mTooFast = true;
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);
if (mMissingLedger->isComplete())
{
@@ -168,16 +171,17 @@ void LedgerMaster::acquireMissingLedger(const uint256& ledgerHash, uint32 ledger
if (lgr && (lgr->getLedgerSeq() == ledgerSeq))
missingAcquireComplete(mMissingLedger);
mMissingLedger.reset();
return;
return true;
}
else if (mMissingLedger->isDone())
{
mMissingLedger.reset();
return;
return false;
}
mMissingSeq = ledgerSeq;
if (mMissingLedger->setAccept())
mMissingLedger->addOnComplete(boost::bind(&LedgerMaster::missingAcquireComplete, this, _1));
return true;
}
void LedgerMaster::missingAcquireComplete(LedgerAcquire::pointer acq)

View File

@@ -51,7 +51,7 @@ protected:
bool isValidTransaction(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 missingAcquireComplete(LedgerAcquire::pointer);
void pubThread();