mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 01:37:00 +00:00
[8903] Stop anti-freeze thread eraly to prevent it triggering at shutdown operations.
This commit is contained in:
parent
d5d3f6d26a
commit
0c1de29d65
2 changed files with 15 additions and 7 deletions
|
|
@ -292,12 +292,13 @@ int Master::Run()
|
||||||
realCurrTime = realPrevTime = getMSTime();
|
realCurrTime = realPrevTime = getMSTime();
|
||||||
|
|
||||||
///- Start up freeze catcher thread
|
///- Start up freeze catcher thread
|
||||||
|
ACE_Based::Thread* freeze_thread = NULL;
|
||||||
if(uint32 freeze_delay = sConfig.GetIntDefault("MaxCoreStuckTime", 0))
|
if(uint32 freeze_delay = sConfig.GetIntDefault("MaxCoreStuckTime", 0))
|
||||||
{
|
{
|
||||||
FreezeDetectorRunnable *fdr = new FreezeDetectorRunnable();
|
FreezeDetectorRunnable *fdr = new FreezeDetectorRunnable();
|
||||||
fdr->SetDelayTime(freeze_delay*1000);
|
fdr->SetDelayTime(freeze_delay*1000);
|
||||||
ACE_Based::Thread freeze_thread(fdr);
|
freeze_thread = new ACE_Based::Thread(fdr);
|
||||||
freeze_thread.setPriority(ACE_Based::Highest);
|
freeze_thread->setPriority(ACE_Based::Highest);
|
||||||
}
|
}
|
||||||
|
|
||||||
///- Launch the world listener socket
|
///- Launch the world listener socket
|
||||||
|
|
@ -313,7 +314,14 @@ int Master::Run()
|
||||||
|
|
||||||
sWorldSocketMgr->Wait ();
|
sWorldSocketMgr->Wait ();
|
||||||
|
|
||||||
// set server offline
|
///- Stop freeze protection before shutdown tasks
|
||||||
|
if (freeze_thread)
|
||||||
|
{
|
||||||
|
freeze_thread->destroy();
|
||||||
|
delete freeze_thread;
|
||||||
|
}
|
||||||
|
|
||||||
|
///- Set server offline in realmlist
|
||||||
loginDatabase.PExecute("UPDATE realmlist SET color = 2 WHERE id = '%d'",realmID);
|
loginDatabase.PExecute("UPDATE realmlist SET color = 2 WHERE id = '%d'",realmID);
|
||||||
|
|
||||||
///- Remove signal handling before leaving
|
///- Remove signal handling before leaving
|
||||||
|
|
@ -324,10 +332,10 @@ int Master::Run()
|
||||||
world_thread.wait();
|
world_thread.wait();
|
||||||
rar_thread.wait ();
|
rar_thread.wait ();
|
||||||
|
|
||||||
///- Clean database before leaving
|
///- Clean account database before leaving
|
||||||
clearOnlineAccounts();
|
clearOnlineAccounts();
|
||||||
|
|
||||||
///- Wait for delay threads to end
|
///- Wait for DB delay threads to end
|
||||||
CharacterDatabase.HaltDelayThread();
|
CharacterDatabase.HaltDelayThread();
|
||||||
WorldDatabase.HaltDelayThread();
|
WorldDatabase.HaltDelayThread();
|
||||||
loginDatabase.HaltDelayThread();
|
loginDatabase.HaltDelayThread();
|
||||||
|
|
@ -388,7 +396,7 @@ int Master::Run()
|
||||||
// fixes a memory leak related to detaching threads from the module
|
// fixes a memory leak related to detaching threads from the module
|
||||||
UnloadScriptingModule();
|
UnloadScriptingModule();
|
||||||
|
|
||||||
// Exit the process with specified return value
|
///- Exit the process with specified return value
|
||||||
return World::GetExitCode();
|
return World::GetExitCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "8902"
|
#define REVISION_NR "8903"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue