fix: #686 - concurrent map read and write - in entity instances

This commit is contained in:
jamesread 2025-11-04 23:30:14 +00:00
parent 2b24daa6d0
commit 055472902d
1 changed files with 9 additions and 2 deletions

View File

@ -63,8 +63,10 @@ func GetEntities() entitiesByClass {
rwmutex.RLock() rwmutex.RLock()
copiedEntities := make(entitiesByClass, len(contents.Entities)) copiedEntities := make(entitiesByClass, len(contents.Entities))
for entityName, entityInstances := range contents.Entities { for entityName, entityInstances := range contents.Entities {
copiedInstances := make(entityInstancesByKey, len(entityInstances)) copiedInstances := make(entityInstancesByKey, len(entityInstances))
for key, entity := range entityInstances { for key, entity := range entityInstances {
copiedInstances[key] = entity copiedInstances[key] = entity
} }
@ -81,10 +83,15 @@ func GetEntityInstances(entityName string) entityInstancesByKey {
defer rwmutex.RUnlock() defer rwmutex.RUnlock()
if entities, ok := contents.Entities[entityName]; ok { if entities, ok := contents.Entities[entityName]; ok {
return entities copiedInstances := make(entityInstancesByKey, len(entities))
for key, entity := range entities {
copiedInstances[key] = entity
}
return copiedInstances
} }
return nil return make(entityInstancesByKey, 0)
} }
func AddEntity(entityName string, entityKey string, data any) { func AddEntity(entityName string, entityKey string, data any) {