mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
Avoid deadlock.
This commit is contained in:
@@ -575,6 +575,7 @@ void LedgerMaster::advanceThread()
|
|||||||
if ((missing != RangeSet::absent) &&
|
if ((missing != RangeSet::absent) &&
|
||||||
shouldAcquire(mValidLedger->getLedgerSeq(), getConfig().LEDGER_HISTORY, missing))
|
shouldAcquire(mValidLedger->getLedgerSeq(), getConfig().LEDGER_HISTORY, missing))
|
||||||
{
|
{
|
||||||
|
sl.unlock();
|
||||||
Ledger::pointer nextLedger = mLedgerHistory.getLedgerBySeq(missing + 1);
|
Ledger::pointer nextLedger = mLedgerHistory.getLedgerBySeq(missing + 1);
|
||||||
if (nextLedger)
|
if (nextLedger)
|
||||||
{
|
{
|
||||||
@@ -594,10 +595,8 @@ void LedgerMaster::advanceThread()
|
|||||||
}
|
}
|
||||||
if (ledger)
|
if (ledger)
|
||||||
{
|
{
|
||||||
sl.unlock();
|
|
||||||
setFullLedger(ledger, false, false);
|
setFullLedger(ledger, false, false);
|
||||||
tryFill(ledger);
|
tryFill(ledger);
|
||||||
sl.lock();
|
|
||||||
progress = true;
|
progress = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -607,6 +606,9 @@ void LedgerMaster::advanceThread()
|
|||||||
WriteLog (lsFATAL, LedgerMaster) << "Pub:" << mPubLedger->getLedgerSeq() << " Val:" << mValidLedger->getLedgerSeq();
|
WriteLog (lsFATAL, LedgerMaster) << "Pub:" << mPubLedger->getLedgerSeq() << " Val:" << mValidLedger->getLedgerSeq();
|
||||||
assert(false);
|
assert(false);
|
||||||
}
|
}
|
||||||
|
sl.lock();
|
||||||
|
if (mValidLedger->getLedgerSeq() != mPubLedger->getLedgerSeq())
|
||||||
|
progress = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user