Avoid deadlock.

This commit is contained in:
JoelKatz
2013-08-12 20:17:52 -07:00
parent 98d88c8ded
commit ae8969529d

View File

@@ -575,6 +575,7 @@ void LedgerMaster::advanceThread()
if ((missing != RangeSet::absent) &&
shouldAcquire(mValidLedger->getLedgerSeq(), getConfig().LEDGER_HISTORY, missing))
{
sl.unlock();
Ledger::pointer nextLedger = mLedgerHistory.getLedgerBySeq(missing + 1);
if (nextLedger)
{
@@ -594,10 +595,8 @@ void LedgerMaster::advanceThread()
}
if (ledger)
{
sl.unlock();
setFullLedger(ledger, false, false);
tryFill(ledger);
sl.lock();
progress = true;
}
}
@@ -607,6 +606,9 @@ void LedgerMaster::advanceThread()
WriteLog (lsFATAL, LedgerMaster) << "Pub:" << mPubLedger->getLedgerSeq() << " Val:" << mValidLedger->getLedgerSeq();
assert(false);
}
sl.lock();
if (mValidLedger->getLedgerSeq() != mPubLedger->getLedgerSeq())
progress = true;
}
}
else