From bd583a59fe4dff54587a757fc4da71db2b9004b5 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 11 Jun 2026 11:12:55 +0200 Subject: [PATCH] Messo TTL x dati statistiche a 30gg max --- MP.RIOC/Services/MetricsCalcService.cs | 12 +++++++++++- MP.SPEC/Data/MpDataService.cs | 2 ++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/MP.RIOC/Services/MetricsCalcService.cs b/MP.RIOC/Services/MetricsCalcService.cs index 39fe50cc..03492a3d 100644 --- a/MP.RIOC/Services/MetricsCalcService.cs +++ b/MP.RIOC/Services/MetricsCalcService.cs @@ -115,7 +115,7 @@ namespace MP.RIOC.Services // Calcolo NoReply: Somma di tutti i codici >= 400 o errori espliciti long noReplyCount = stat.ErrorMessages.Sum(x => x.Value); - // 1. INVIO BUCKET PRINCIPALE (con NoReply) + // 1. INVIO BUCKET PRINCIPALE (con NoReply) // Usiamo lo script Lua per l'aggiornamento atomico dell'ora tasks.Add(batch.ScriptEvaluateAsync(_updateScript, new RedisKey[] { hourKey }, @@ -128,10 +128,15 @@ namespace MP.RIOC.Services SentinelValue })); + // 1b. Imposta TTL 30 giorni su bucket hourly per prevenire chiavi orfane + tasks.Add(batch.KeyExpireAsync(hourKey, TimeSpan.FromDays(30))); + // 2. INVIO DISTRIBUZIONE STATUS CODES if (stat.StatusCodes.Any()) { var statusKey = hourKey + ":status"; + // Imposta TTL 30 giorni su chiavi ausiliarie per prevenire chiavi orfane + tasks.Add(batch.KeyExpireAsync(statusKey, TimeSpan.FromDays(30))); foreach (var status in stat.StatusCodes) { tasks.Add(batch.HashIncrementAsync(statusKey, status.Key.ToString(), status.Value)); @@ -144,6 +149,8 @@ namespace MP.RIOC.Services if (stat.ErrorMessages.Any()) { var errorKey = hourKey + ":errors"; + // Imposta TTL 30 giorni su chiavi ausiliarie per prevenire chiavi orfane + tasks.Add(batch.KeyExpireAsync(errorKey, TimeSpan.FromDays(30))); foreach (var error in stat.ErrorMessages) { // Usiamo HashIncrement per aggregare messaggi uguali @@ -174,6 +181,9 @@ namespace MP.RIOC.Services // Aggiungiamo l'indice al batch tasks.Add(batch.SortedSetAddAsync(daysIndex, dayKey, dayScore)); + + // 5. Imposta TTL 30 giorni su chiave daily per prevenire chiavi orfane + tasks.Add(batch.KeyExpireAsync(dayKey, TimeSpan.FromDays(30))); } // --- INVIO AGGREGATI DAILY A REDIS --- diff --git a/MP.SPEC/Data/MpDataService.cs b/MP.SPEC/Data/MpDataService.cs index 79a911ab..c0ecbd5d 100644 --- a/MP.SPEC/Data/MpDataService.cs +++ b/MP.SPEC/Data/MpDataService.cs @@ -2198,6 +2198,7 @@ namespace MP.SPEC.Data /// /// Cancellazione FusionCache dato singolo tag /// + /// /// private async Task FlushFusionCacheAsync(string tag) { @@ -2211,6 +2212,7 @@ namespace MP.SPEC.Data /// /// Cancellazione FusionCache dato elenco tags /// + /// /// private async Task FlushFusionCacheAsync(List listTags) {