diff options
| author | Machiavelli <none@none> | 2010-10-02 14:26:58 +0200 |
|---|---|---|
| committer | Machiavelli <none@none> | 2010-10-02 14:26:58 +0200 |
| commit | c4710bde766bdb37477022e4a1768dab3ff311fa (patch) | |
| tree | 6c6f8eaa2f20a1c1fcc2412f2942ce1010fab8d7 /src/server/worldserver | |
| parent | 0f09690c5c1d0c391df9faa6a702f3d892a452dc (diff) | |
Core/DBLayer: Fix MySQL timeout issue. World runnable will now call KeepAlive on each database after a specified number of seconds (MaxPingTime in worldserver.conf)
Based on patch by kingarus81
Fixes issue #4062
Also remove explicit numbering from WorldTimers enum
--HG--
branch : trunk
Diffstat (limited to 'src/server/worldserver')
| -rw-r--r-- | src/server/worldserver/Master.cpp | 26 | ||||
| -rw-r--r-- | src/server/worldserver/worldserver.conf.dist | 5 |
2 files changed, 4 insertions, 27 deletions
diff --git a/src/server/worldserver/Master.cpp b/src/server/worldserver/Master.cpp index 15ec29c140c..ef1e562b412 100644 --- a/src/server/worldserver/Master.cpp +++ b/src/server/worldserver/Master.cpp @@ -119,25 +119,7 @@ public: class RARunnable : public ACE_Based::Runnable { public: - uint32 numLoops, loopCounter; - - RARunnable () - { - uint32 socketSelecttime = sWorld.getIntConfig(CONFIG_SOCKET_SELECTTIME); - numLoops = (sConfig.GetIntDefault ("MaxPingTime", 30) * (MINUTE * 1000000 / socketSelecttime)); - loopCounter = 0; - } - - void checkping () - { - // ping if need - if ((++loopCounter) == numLoops) - { - loopCounter = 0; - sLog.outDetail ("Ping MySQL to keep connection alive"); - LoginDatabase.KeepAlive(); - } - } + RARunnable () {} void run () { @@ -171,18 +153,12 @@ public: if (usera) { while (!World::IsStopped()) - { h.Select (0, socketSelecttime); - checkping (); - } } else { while (!World::IsStopped()) - { ACE_Based::Thread::Sleep(static_cast<unsigned long> (socketSelecttime / 1000)); - // checkping (); -- What? - } } } }; diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index 3bbf0cc5f9e..dc368b598da 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -53,7 +53,8 @@ # Default: 1, 1, 2 # # MaxPingTime -# Settings for maximum database-ping interval (minutes between pings) +# Settings for maximum database-ping interval (seconds between pings) +# Default: 1800 (30 minutes) # # WorldServerPort # Default WorldServerPort @@ -75,7 +76,7 @@ CharacterDatabase.WorkerThreads = 1 LoginDatabase.SynchThreads = 1 WorldDatabase.SynchThreads = 1 CharacterDatabase.SynchThreads = 2 -MaxPingTime = 30 +MaxPingTime = 1800 WorldServerPort = 8085 BindIP = "0.0.0.0" |
