From 95842900a7d1b4ad103939ee0961419db5b1a2c1 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sat, 1 Oct 2022 16:48:27 -0400 Subject: [PATCH] Core/World: Include more details about MaxCoreStuckTime asserts Port From (https://github.com/TrinityCore/TrinityCore/commit/c80d7696c332cbe45cb0457a75b4f56381317a69) --- Source/WorldServer/Server.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Source/WorldServer/Server.cs b/Source/WorldServer/Server.cs index b9884b73b..df37c569c 100644 --- a/Source/WorldServer/Server.cs +++ b/Source/WorldServer/Server.cs @@ -184,6 +184,11 @@ namespace WorldServer int minUpdateDiff = ConfigMgr.GetDefaultValue("MinWorldUpdateTime", 1); 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) { var realCurrTime = Time.GetMSTime(); @@ -191,8 +196,12 @@ namespace WorldServer uint diff = Time.GetMSTimeDiff(realPrevTime, realCurrTime); 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 - Thread.Sleep(TimeSpan.FromMilliseconds(minUpdateDiff - diff)); + Thread.Sleep(TimeSpan.FromMilliseconds(sleepTime)); continue; }