From 4676f96889b1588b54010eff81d063c7b8753078 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Tue, 7 Apr 2026 12:30:55 +0200 Subject: [PATCH] Fix chiamata program.cs x servizi scopet/singleton x flushDb --- MP.IOC/Program.cs | 4 ++-- MP.IOC/Resources/ChangeLog.html | 2 +- MP.IOC/Resources/VersNum.txt | 2 +- MP.IOC/Resources/manifest.xml | 2 +- MP.IOC/Services/MetricsDbFlushService.cs | 19 ++++++++++++------- MP.IOC/appsettings.json | 3 ++- 6 files changed, 19 insertions(+), 13 deletions(-) diff --git a/MP.IOC/Program.cs b/MP.IOC/Program.cs index 83288459..fd182e0b 100644 --- a/MP.IOC/Program.cs +++ b/MP.IOC/Program.cs @@ -64,9 +64,9 @@ builder.Services.AddSingleton(); builder.Services.AddHostedService(); // da rivedere -#if false -builder.Services.AddHostedService(); +#if true #endif +builder.Services.AddHostedService(); // MP.Data DbContext for Stats repositories string utilsConnString = builder.Configuration.GetConnectionString("MP.Utils") ?? "Server=localhost;Database=MoonPro_Utils; integrated security=True; MultipleActiveResultSets=True; App=MP.IOC;"; diff --git a/MP.IOC/Resources/ChangeLog.html b/MP.IOC/Resources/ChangeLog.html index 8b0bc04c..8d950f80 100644 --- a/MP.IOC/Resources/ChangeLog.html +++ b/MP.IOC/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo MP-IOC -

Versione: 6.16.2604.711

+

Versione: 6.16.2604.712


Note di rilascio:
  • diff --git a/MP.IOC/Resources/VersNum.txt b/MP.IOC/Resources/VersNum.txt index 5796bee1..e400f432 100644 --- a/MP.IOC/Resources/VersNum.txt +++ b/MP.IOC/Resources/VersNum.txt @@ -1 +1 @@ -6.16.2604.711 +6.16.2604.712 diff --git a/MP.IOC/Resources/manifest.xml b/MP.IOC/Resources/manifest.xml index 96f5201e..50c81a3b 100644 --- a/MP.IOC/Resources/manifest.xml +++ b/MP.IOC/Resources/manifest.xml @@ -1,6 +1,6 @@ - 6.16.2604.711 + 6.16.2604.712 https://nexus.steamware.net/repository/SWS/MP-IOC/stable/LAST/MP.IOC.zip https://nexus.steamware.net/repository/SWS/MP-IOC/stable/LAST/ChangeLog.html false diff --git a/MP.IOC/Services/MetricsDbFlushService.cs b/MP.IOC/Services/MetricsDbFlushService.cs index f4595367..f238e4ff 100644 --- a/MP.IOC/Services/MetricsDbFlushService.cs +++ b/MP.IOC/Services/MetricsDbFlushService.cs @@ -8,24 +8,27 @@ namespace MP.IOC.Services { public class MetricsDbFlushService : BackgroundService { + private readonly IServiceScopeFactory _scopeFactory; private const int FlushIntervalSeconds = 30; private readonly RouteStatsManager _stats; - private readonly IStatsAggrService _aggrService; - private readonly IStatsDetailService _detailService; + //private readonly IStatsAggrService _aggrService; + //private readonly IStatsDetailService _detailService; private readonly IConfiguration _config; private readonly IDatabase _db; private static readonly Logger Log = LogManager.GetCurrentClassLogger(); public MetricsDbFlushService( RouteStatsManager stats, - IStatsAggrService aggrService, - IStatsDetailService detailService, + IServiceScopeFactory scopeFactory, + //IStatsAggrService aggrService, + //IStatsDetailService detailService, IConfiguration config, IConnectionMultiplexer mux) { _stats = stats; - _aggrService = aggrService; - _detailService = detailService; + _scopeFactory = scopeFactory; + //_aggrService = aggrService; + //_detailService = detailService; _config = config; _db = mux.GetDatabase(); } @@ -133,9 +136,10 @@ namespace MP.IOC.Services detailRecords.Add(detailRecord); } } - + await using var scope = _scopeFactory.CreateAsyncScope(); if (aggrRecords.Count > 0) { + var _aggrService = scope.ServiceProvider.GetRequiredService(); await _aggrService.UpsertManyAsync(aggrRecords, false); Log.Info("Flushed {count} current aggregated stats records", aggrRecords.Count); @@ -150,6 +154,7 @@ namespace MP.IOC.Services if (detailRecords.Count > 0) { + var _detailService = scope.ServiceProvider.GetRequiredService(); await _detailService.UpsertManyAsync(detailRecords, false); Log.Info("Flushed {count} current detail stats records", detailRecords.Count); diff --git a/MP.IOC/appsettings.json b/MP.IOC/appsettings.json index e6cf165a..d9d6acac 100644 --- a/MP.IOC/appsettings.json +++ b/MP.IOC/appsettings.json @@ -70,7 +70,8 @@ } }, "RouteMan": { - "FlushIntervalSeconds": 60, + "FlushIntervalSeconds": 10, + //"FlushIntervalSeconds": 60, "DefaultWeightOld": 100, "DefaultWeightNew": 0, "DeleteExpiredMetrics": false