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();
|
||||
|
||||
///- Start up freeze catcher thread
|
||||
ACE_Based::Thread* freeze_thread = NULL;
|
||||
if(uint32 freeze_delay = sConfig.GetIntDefault("MaxCoreStuckTime", 0))
|
||||
{
|
||||
FreezeDetectorRunnable *fdr = new FreezeDetectorRunnable();
|
||||
fdr->SetDelayTime(freeze_delay*1000);
|
||||
ACE_Based::Thread freeze_thread(fdr);
|
||||
freeze_thread.setPriority(ACE_Based::Highest);
|
||||
freeze_thread = new ACE_Based::Thread(fdr);
|
||||
freeze_thread->setPriority(ACE_Based::Highest);
|
||||
}
|
||||
|
||||
///- Launch the world listener socket
|
||||
|
|
@ -313,7 +314,14 @@ int Master::Run()
|
|||
|
||||
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);
|
||||
|
||||
///- Remove signal handling before leaving
|
||||
|
|
@ -324,10 +332,10 @@ int Master::Run()
|
|||
world_thread.wait();
|
||||
rar_thread.wait ();
|
||||
|
||||
///- Clean database before leaving
|
||||
///- Clean account database before leaving
|
||||
clearOnlineAccounts();
|
||||
|
||||
///- Wait for delay threads to end
|
||||
///- Wait for DB delay threads to end
|
||||
CharacterDatabase.HaltDelayThread();
|
||||
WorldDatabase.HaltDelayThread();
|
||||
loginDatabase.HaltDelayThread();
|
||||
|
|
@ -388,7 +396,7 @@ int Master::Run()
|
|||
// fixes a memory leak related to detaching threads from the module
|
||||
UnloadScriptingModule();
|
||||
|
||||
// Exit the process with specified return value
|
||||
///- Exit the process with specified return value
|
||||
return World::GetExitCode();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "8902"
|
||||
#define REVISION_NR "8903"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue