Core/World: Include more details about MaxCoreStuckTime asserts
Port From (https://github.com/TrinityCore/TrinityCore/commit/c80d7696c332cbe45cb0457a75b4f56381317a69)
This commit is contained in:
@@ -184,6 +184,11 @@ namespace WorldServer
|
|||||||
int minUpdateDiff = ConfigMgr.GetDefaultValue("MinWorldUpdateTime", 1);
|
int minUpdateDiff = ConfigMgr.GetDefaultValue("MinWorldUpdateTime", 1);
|
||||||
uint realPrevTime = Time.GetMSTime();
|
uint realPrevTime = Time.GetMSTime();
|
||||||
|
|
||||||
|
uint maxCoreStuckTime = ConfigMgr.GetDefaultValue("MaxCoreStuckTime", 60u) * 1000u;
|
||||||
|
uint halfMaxCoreStuckTime = maxCoreStuckTime / 2;
|
||||||
|
if (halfMaxCoreStuckTime == 0)
|
||||||
|
halfMaxCoreStuckTime = uint.MaxValue;
|
||||||
|
|
||||||
while (!Global.WorldMgr.IsStopped)
|
while (!Global.WorldMgr.IsStopped)
|
||||||
{
|
{
|
||||||
var realCurrTime = Time.GetMSTime();
|
var realCurrTime = Time.GetMSTime();
|
||||||
@@ -191,8 +196,12 @@ namespace WorldServer
|
|||||||
uint diff = Time.GetMSTimeDiff(realPrevTime, realCurrTime);
|
uint diff = Time.GetMSTimeDiff(realPrevTime, realCurrTime);
|
||||||
if (diff < minUpdateDiff)
|
if (diff < minUpdateDiff)
|
||||||
{
|
{
|
||||||
|
uint sleepTime = (uint)(minUpdateDiff - diff);
|
||||||
|
if (sleepTime >= halfMaxCoreStuckTime)
|
||||||
|
Log.outError(LogFilter.Server, $"WorldUpdateLoop() waiting for {sleepTime} ms with MaxCoreStuckTime set to {maxCoreStuckTime} ms");
|
||||||
|
|
||||||
// sleep until enough time passes that we can update all timers
|
// sleep until enough time passes that we can update all timers
|
||||||
Thread.Sleep(TimeSpan.FromMilliseconds(minUpdateDiff - diff));
|
Thread.Sleep(TimeSpan.FromMilliseconds(sleepTime));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user