From 9887818e7e206e9b48bccd7d702943465f7f22e6 Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Sun, 28 Dec 2025 17:54:53 -0800 Subject: [PATCH] fix: Prevent cascading deletes during world deserialization (#2298) ### Summary Fixes an issue where deleting entities during world load can cause cascading delete failures when the world is not fully loaded. --- .../Serialization/GenericEntityPersistence.cs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Projects/Server/Serialization/GenericEntityPersistence.cs b/Projects/Server/Serialization/GenericEntityPersistence.cs index abc6ba3e0..e2a25909c 100644 --- a/Projects/Server/Serialization/GenericEntityPersistence.cs +++ b/Projects/Server/Serialization/GenericEntityPersistence.cs @@ -345,8 +345,21 @@ public class GenericEntityPersistence : GenericPersistence, IGenericEntityPer _entities.Clear(); _entities.TrimExcess(); _entities = null; + + if (_toDelete != null) + { + foreach (var t in _toDelete) + { + t.Delete(); + } + + _toDelete.Clear(); + _toDelete = null; + } } + private static List _toDelete; + private unsafe void InternalDeserialize(string filePath, int index, Dictionary typesDb) { using var mmf = MemoryMappedFile.CreateFromFile(filePath, FileMode.Open); @@ -415,7 +428,8 @@ public class GenericEntityPersistence : GenericPersistence, IGenericEntityPer } } - t.Delete(); + _toDelete ??= []; + _toDelete.Add(t); } }