From 2b24daa6d0f9e226ce71569e474fa72fb98600e8 Mon Sep 17 00:00:00 2001 From: jamesread Date: Tue, 4 Nov 2025 23:18:41 +0000 Subject: [PATCH] fix: Address concurrency issue in entities storage --- service/internal/entities/storage.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/service/internal/entities/storage.go b/service/internal/entities/storage.go index 5bed05c..55a3e36 100644 --- a/service/internal/entities/storage.go +++ b/service/internal/entities/storage.go @@ -61,9 +61,19 @@ func GetAll() *variableBase { func GetEntities() entitiesByClass { rwmutex.RLock() - defer rwmutex.RUnlock() - return contents.Entities + copiedEntities := make(entitiesByClass, len(contents.Entities)) + for entityName, entityInstances := range contents.Entities { + copiedInstances := make(entityInstancesByKey, len(entityInstances)) + for key, entity := range entityInstances { + copiedInstances[key] = entity + } + copiedEntities[entityName] = copiedInstances + } + + rwmutex.RUnlock() + + return copiedEntities } func GetEntityInstances(entityName string) entityInstancesByKey {