perf(host): compile inbound API methods in parallel at startup

Claude-Session: https://claude.ai/code/session_01MtdgwpEeCUn6cUA5f1LMPj
This commit is contained in:
Joseph Doherty
2026-07-10 03:49:53 -04:00
parent 839baa7880
commit 102f5b60ee
+4 -4
View File
@@ -403,10 +403,10 @@ try
var apiRepo = scope.ServiceProvider.GetRequiredService<ZB.MOM.WW.ScadaBridge.Commons.Interfaces.Repositories.IInboundApiRepository>(); var apiRepo = scope.ServiceProvider.GetRequiredService<ZB.MOM.WW.ScadaBridge.Commons.Interfaces.Repositories.IInboundApiRepository>();
var executor = app.Services.GetRequiredService<ZB.MOM.WW.ScadaBridge.InboundAPI.InboundScriptExecutor>(); var executor = app.Services.GetRequiredService<ZB.MOM.WW.ScadaBridge.InboundAPI.InboundScriptExecutor>();
var methods = await apiRepo.GetAllApiMethodsAsync(); var methods = await apiRepo.GetAllApiMethodsAsync();
foreach (var method in methods) // Parallel: CompileAndRegister is safe for concurrent callers (ConcurrentDictionary
{ // caches, no shared mutable compile state); serial Roslyn compiles stretch the
executor.CompileAndRegister(method); // failover-recovery window at hundreds of methods (arch-review PLAN-06 Task 7).
} Parallel.ForEach(methods, method => executor.CompileAndRegister(method));
} }
await app.RunAsync(); await app.RunAsync();