DeadlockDetect is configurable now.
This is needed when debugging Lua plugins.
This commit is contained in:
parent
9a36564ce9
commit
bf30528ec4
@ -31,8 +31,10 @@ cDeadlockDetect::cDeadlockDetect(void) :
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool cDeadlockDetect::Start(void)
|
bool cDeadlockDetect::Start(int a_IntervalSec)
|
||||||
{
|
{
|
||||||
|
m_IntervalSec = a_IntervalSec;
|
||||||
|
|
||||||
// Read the initial world data:
|
// Read the initial world data:
|
||||||
class cFillIn :
|
class cFillIn :
|
||||||
public cWorldListCallback
|
public cWorldListCallback
|
||||||
@ -115,7 +117,7 @@ void cDeadlockDetect::CheckWorldAge(const AString & a_WorldName, Int64 a_Age)
|
|||||||
if (itr->second.m_Age == a_Age)
|
if (itr->second.m_Age == a_Age)
|
||||||
{
|
{
|
||||||
itr->second.m_NumCyclesSame += 1;
|
itr->second.m_NumCyclesSame += 1;
|
||||||
if (itr->second.m_NumCyclesSame > NUM_CYCLES_LIMIT)
|
if (itr->second.m_NumCyclesSame > (1000 * m_IntervalSec) / CYCLE_MILLISECONDS)
|
||||||
{
|
{
|
||||||
DeadlockDetected();
|
DeadlockDetected();
|
||||||
return;
|
return;
|
||||||
|
@ -29,7 +29,7 @@ public:
|
|||||||
cDeadlockDetect(void);
|
cDeadlockDetect(void);
|
||||||
|
|
||||||
/// Starts the detection. Hides cIsThread's Start, because we need some initialization
|
/// Starts the detection. Hides cIsThread's Start, because we need some initialization
|
||||||
bool Start(void);
|
bool Start(int a_IntervalSec);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
struct sWorldAge
|
struct sWorldAge
|
||||||
@ -46,6 +46,9 @@ protected:
|
|||||||
|
|
||||||
WorldAges m_WorldAges;
|
WorldAges m_WorldAges;
|
||||||
|
|
||||||
|
/// Number of secods for which the ages must be the same for the detection to trigger
|
||||||
|
int m_IntervalSec;
|
||||||
|
|
||||||
|
|
||||||
// cIsThread overrides:
|
// cIsThread overrides:
|
||||||
virtual void Execute(void) override;
|
virtual void Execute(void) override;
|
||||||
|
11
src/Root.cpp
11
src/Root.cpp
@ -165,13 +165,16 @@ void cRoot::Start(void)
|
|||||||
LOGD("Starting Authenticator...");
|
LOGD("Starting Authenticator...");
|
||||||
m_Authenticator.Start(IniFile);
|
m_Authenticator.Start(IniFile);
|
||||||
|
|
||||||
IniFile.WriteFile("settings.ini");
|
|
||||||
|
|
||||||
LOGD("Starting worlds...");
|
LOGD("Starting worlds...");
|
||||||
StartWorlds();
|
StartWorlds();
|
||||||
|
|
||||||
LOGD("Starting deadlock detector...");
|
if (IniFile.GetValueSetB("DeadlockDetect", "Enabled", true))
|
||||||
dd.Start();
|
{
|
||||||
|
LOGD("Starting deadlock detector...");
|
||||||
|
dd.Start(IniFile.GetValueSetI("DeadlockDetect", "IntervalSec", 20));
|
||||||
|
}
|
||||||
|
|
||||||
|
IniFile.WriteFile("settings.ini");
|
||||||
|
|
||||||
LOGD("Finalising startup...");
|
LOGD("Finalising startup...");
|
||||||
m_Server->Start();
|
m_Server->Start();
|
||||||
|
Loading…
Reference in New Issue
Block a user