mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-27 06:25:51 +00:00
The deadlock detector was armed too early.
This commit is contained in:
@@ -371,6 +371,7 @@ void Application::run()
|
|||||||
boost::thread(boost::bind(runIO, boost::ref(mIOService))).detach();
|
boost::thread(boost::bind(runIO, boost::ref(mIOService))).detach();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
theApp->getLoadManager().arm();
|
||||||
mIOService.run(); // This blocks
|
mIOService.run(); // This blocks
|
||||||
|
|
||||||
if (mWSPublicDoor)
|
if (mWSPublicDoor)
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ int upTime()
|
|||||||
|
|
||||||
LoadManager::LoadManager(int creditRate, int creditLimit, int debitWarn, int debitLimit) :
|
LoadManager::LoadManager(int creditRate, int creditLimit, int debitWarn, int debitLimit) :
|
||||||
mCreditRate(creditRate), mCreditLimit(creditLimit), mDebitWarn(debitWarn), mDebitLimit(debitLimit),
|
mCreditRate(creditRate), mCreditLimit(creditLimit), mDebitWarn(debitWarn), mDebitLimit(debitLimit),
|
||||||
mShutdown(false), mUptime(0), mDeadLock(0), mCosts(LT_MAX)
|
mShutdown(false), mArmed(false), mUptime(0), mDeadLock(0), mCosts(LT_MAX)
|
||||||
{
|
{
|
||||||
addLoadCost(LoadCost(LT_InvalidRequest, -10, LC_CPU | LC_Network));
|
addLoadCost(LoadCost(LT_InvalidRequest, -10, LC_CPU | LC_Network));
|
||||||
addLoadCost(LoadCost(LT_RequestNoReply, -1, LC_CPU | LC_Disk));
|
addLoadCost(LoadCost(LT_RequestNoReply, -1, LC_CPU | LC_Disk));
|
||||||
@@ -353,14 +353,14 @@ void LoadManager::threadEntry()
|
|||||||
++mUptime;
|
++mUptime;
|
||||||
|
|
||||||
int dlTime = mUptime - mDeadLock;
|
int dlTime = mUptime - mDeadLock;
|
||||||
if (dlTime >= 10)
|
if (mArmed && (dlTime >= 10))
|
||||||
{
|
{
|
||||||
if ((dlTime % 10) == 0)
|
if ((dlTime % 10) == 0)
|
||||||
{
|
{
|
||||||
boost::thread(BIND_TYPE(&LogDeadLock, dlTime)).detach();
|
boost::thread(BIND_TYPE(&LogDeadLock, dlTime)).detach();
|
||||||
}
|
}
|
||||||
|
|
||||||
assert (dlTime < 180);
|
assert (dlTime < 500);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,6 +101,7 @@ protected:
|
|||||||
int mDebitLimit; // when a source drops below this, we cut it off (should be negative)
|
int mDebitLimit; // when a source drops below this, we cut it off (should be negative)
|
||||||
|
|
||||||
bool mShutdown;
|
bool mShutdown;
|
||||||
|
bool mArmed;
|
||||||
|
|
||||||
int mSpace1[4]; // We want mUptime to have its own cache line
|
int mSpace1[4]; // We want mUptime to have its own cache line
|
||||||
int mUptime;
|
int mUptime;
|
||||||
@@ -144,6 +145,7 @@ public:
|
|||||||
int getCost(LoadType t) { return mCosts[static_cast<int>(t)].mCost; }
|
int getCost(LoadType t) { return mCosts[static_cast<int>(t)].mCost; }
|
||||||
int getUptime();
|
int getUptime();
|
||||||
void noDeadLock();
|
void noDeadLock();
|
||||||
|
void arm() { mArmed = true; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class LoadFeeTrack
|
class LoadFeeTrack
|
||||||
|
|||||||
Reference in New Issue
Block a user