Fixed multithreading mutation issue

This commit is contained in:
2025-12-31 03:43:44 +01:00
parent bc293bf7ec
commit 8d56883e7e
2 changed files with 16 additions and 6 deletions

View File

@@ -218,6 +218,7 @@ public class SearchdomainHelper(ILogger<SearchdomainHelper> logger, DatabaseHelp
{ {
searchdomain.ReconciliateOrInvalidateCacheForNewOrUpdatedEntity(preexistingEntity); searchdomain.ReconciliateOrInvalidateCacheForNewOrUpdatedEntity(preexistingEntity);
} }
searchdomain.UpdateModelsInUse();
return preexistingEntity; return preexistingEntity;
} }
else else
@@ -243,6 +244,7 @@ public class SearchdomainHelper(ILogger<SearchdomainHelper> logger, DatabaseHelp
}; };
entityCache.Add(entity); entityCache.Add(entity);
searchdomain.ReconciliateOrInvalidateCacheForNewOrUpdatedEntity(entity); searchdomain.ReconciliateOrInvalidateCacheForNewOrUpdatedEntity(entity);
searchdomain.UpdateModelsInUse();
return entity; return entity;
} }
} }

View File

@@ -216,6 +216,11 @@ public class Searchdomain
return queryEmbeddings; return queryEmbeddings;
} }
public void UpdateModelsInUse()
{
modelsInUse = GetModels([.. entityCache]);
}
private static float EvaluateEntityAgainstQueryEmbeddings(Entity entity, Dictionary<string, float[]> queryEmbeddings) private static float EvaluateEntityAgainstQueryEmbeddings(Entity entity, Dictionary<string, float[]> queryEmbeddings)
{ {
List<(string, float)> datapointProbs = []; List<(string, float)> datapointProbs = [];
@@ -237,6 +242,8 @@ public class Searchdomain
public static List<string> GetModels(List<Entity> entities) public static List<string> GetModels(List<Entity> entities)
{ {
List<string> result = []; List<string> result = [];
lock (entities)
{
foreach (Entity entity in entities) foreach (Entity entity in entities)
{ {
foreach (Datapoint datapoint in entity.datapoints) foreach (Datapoint datapoint in entity.datapoints)
@@ -251,6 +258,7 @@ public class Searchdomain
} }
} }
} }
}
return result; return result;
} }