From 294e33d1107149e04b438b1d6f22dbb99fa88d36 Mon Sep 17 00:00:00 2001 From: jamesread Date: Tue, 4 Nov 2025 23:03:45 +0000 Subject: [PATCH] fix: #686 - concurrent map read and write --- service/internal/entities/storage.go | 6 ++++++ service/internal/entities/templates.go | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/service/internal/entities/storage.go b/service/internal/entities/storage.go index b94ddf5..5bed05c 100644 --- a/service/internal/entities/storage.go +++ b/service/internal/entities/storage.go @@ -60,10 +60,16 @@ func GetAll() *variableBase { } func GetEntities() entitiesByClass { + rwmutex.RLock() + defer rwmutex.RUnlock() + return contents.Entities } func GetEntityInstances(entityName string) entityInstancesByKey { + rwmutex.RLock() + defer rwmutex.RUnlock() + if entities, ok := contents.Entities[entityName]; ok { return entities } diff --git a/service/internal/entities/templates.go b/service/internal/entities/templates.go index 46b5bff..ccb67f0 100644 --- a/service/internal/entities/templates.go +++ b/service/internal/entities/templates.go @@ -91,7 +91,7 @@ func ParseTemplateWithArgs(source string, ent *Entity, args map[string]string) s } templateVariables := &variableBase{ - OliveTin: contents.OliveTin, + OliveTin: GetAll().OliveTin, Arguments: args, CurrentEntity: entdata, } @@ -126,5 +126,8 @@ func ParseTemplateBoolWith(source string, ent *Entity) bool { } func ClearEntities(entityType string) { + rwmutex.Lock() + defer rwmutex.Unlock() + delete(contents.Entities, entityType) }