瀏覽代碼

fix: Address concurrency issue in entities storage

jamesread 10 月之前
父節點
當前提交
2b24daa6d0
共有 1 個文件被更改,包括 12 次插入2 次删除
  1. 12 2
      service/internal/entities/storage.go

+ 12 - 2
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 {