From 37cc7540bf365658a3e68c4c8fbb8fd29072d2ee Mon Sep 17 00:00:00 2001 From: Oliver Kieselbach Date: Sun, 12 Apr 2026 18:32:01 +0200 Subject: [PATCH] sanitize appname rowkey --- src/Agent/AutopilotMonitor.Agent/buildcounter.txt | 2 +- .../Functions/Ingest/IngestEventsFunction.Helpers.cs | 2 +- .../Services/TableStorageService.Metrics.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Agent/AutopilotMonitor.Agent/buildcounter.txt b/src/Agent/AutopilotMonitor.Agent/buildcounter.txt index 6cf44bc0..ad2b6c57 100644 --- a/src/Agent/AutopilotMonitor.Agent/buildcounter.txt +++ b/src/Agent/AutopilotMonitor.Agent/buildcounter.txt @@ -1 +1 @@ -914 +915 diff --git a/src/Backend/AutopilotMonitor.Functions/Functions/Ingest/IngestEventsFunction.Helpers.cs b/src/Backend/AutopilotMonitor.Functions/Functions/Ingest/IngestEventsFunction.Helpers.cs index a9073fde..5396d0c3 100644 --- a/src/Backend/AutopilotMonitor.Functions/Functions/Ingest/IngestEventsFunction.Helpers.cs +++ b/src/Backend/AutopilotMonitor.Functions/Functions/Ingest/IngestEventsFunction.Helpers.cs @@ -53,7 +53,7 @@ namespace AutopilotMonitor.Functions.Functions.Ingest if (!isRelevant) return; - var appName = evt.Data?.ContainsKey("appName") == true ? evt.Data["appName"]?.ToString() : null; + var appName = evt.Data?.ContainsKey("appName") == true ? evt.Data["appName"]?.ToString()?.Trim() : null; if (string.IsNullOrEmpty(appName)) return; if (!summaries.TryGetValue(appName, out var state)) diff --git a/src/Backend/AutopilotMonitor.Functions/Services/TableStorageService.Metrics.cs b/src/Backend/AutopilotMonitor.Functions/Services/TableStorageService.Metrics.cs index 4222f905..44279c31 100644 --- a/src/Backend/AutopilotMonitor.Functions/Services/TableStorageService.Metrics.cs +++ b/src/Backend/AutopilotMonitor.Functions/Services/TableStorageService.Metrics.cs @@ -151,7 +151,7 @@ namespace AutopilotMonitor.Functions.Services try { var tableClient = _tableServiceClient.GetTableClient(Constants.TableNames.AppInstallSummaries); - var rowKey = $"{summary.SessionId}_{summary.AppName}"; + var rowKey = SanitizeTableKey($"{summary.SessionId}_{summary.AppName}"); // Merge with existing record to preserve StartedAt from a prior batch var existingResult = await tableClient.GetEntityIfExistsAsync(summary.TenantId, rowKey);