From be58bfbe3c471c7e5e5fdddc9d970e3e1ceb8d7b Mon Sep 17 00:00:00 2001 From: Shawn Jackson Date: Mon, 22 Jun 2026 12:57:08 -0500 Subject: [PATCH 1/2] RE1-T114 Fixes --- Core/Resgrid.Services/DepartmentSettingsService.cs | 6 +++++- Workers/Resgrid.Workers.Console/Dockerfile | 8 ++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Core/Resgrid.Services/DepartmentSettingsService.cs b/Core/Resgrid.Services/DepartmentSettingsService.cs index 8c6a27c75..700624657 100644 --- a/Core/Resgrid.Services/DepartmentSettingsService.cs +++ b/Core/Resgrid.Services/DepartmentSettingsService.cs @@ -19,6 +19,7 @@ public class DepartmentSettingsService : IDepartmentSettingsService private static string PaddleCustomerCacheKey = "DSetPaddleCus_{0}"; private static string BigBoardCenterGps = "DSetBBCenterGps_{0}"; private static string StaffingSupressInfo = "DSetStaffingSupress_{0}"; + private static string ModuleSettingsCacheKey = "DSetModuleSettings_{0}"; private static string TtsLanguageCacheKey = "DSetTtsLanguage_{0}"; private static string PersonnelOnUnitSetUnitStatusCacheKey = "DSetPersonnelOnUnitSetUnitStatus_{0}"; private static string ModernNotificationsCacheKey = "DSetModernNotifications_{0}"; @@ -67,6 +68,9 @@ public DepartmentSettingsService(IDepartmentSettingsRepository departmentSetting case DepartmentSettingTypes.StaffingSuppressStaffingLevels: await _cacheProvider.RemoveAsync(string.Format(StaffingSupressInfo, departmentId)); break; + case DepartmentSettingTypes.ModuleSettings: + await _cacheProvider.RemoveAsync(string.Format(ModuleSettingsCacheKey, departmentId)); + break; case DepartmentSettingTypes.TtsLanguage: await _cacheProvider.RemoveAsync(string.Format(TtsLanguageCacheKey, departmentId)); break; @@ -759,7 +763,7 @@ async Task getSetting() if (!bypassCache && Config.SystemBehaviorConfig.CacheEnabled) { - var cachedValue = await _cacheProvider.RetrieveAsync(string.Format(StaffingSupressInfo, departmentId), + var cachedValue = await _cacheProvider.RetrieveAsync(string.Format(ModuleSettingsCacheKey, departmentId), getSetting, ThatsNotLongThisIsLongCacheLength); return cachedValue; diff --git a/Workers/Resgrid.Workers.Console/Dockerfile b/Workers/Resgrid.Workers.Console/Dockerfile index aa79b303e..135065d1b 100644 --- a/Workers/Resgrid.Workers.Console/Dockerfile +++ b/Workers/Resgrid.Workers.Console/Dockerfile @@ -2,8 +2,12 @@ #See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. ARG BUILD_VERSION=3.5.0 -#FROM mcr.microsoft.com/dotnet/runtime:9.0.3-noble-amd64 AS base -FROM dhi.io/dotnet:9.0.16-debian13@sha256:4797903e46b475875f4a402aa6f42a1dcc78cfe67d217f9f5f49e358b60d47a3 AS base +## Workers.Console transitively requires the ASP.NET Core shared framework +## (OpenIddict + the shared Services/Providers projects FrameworkReference +## Microsoft.AspNetCore.App), so the runtime-only "dhi.io/dotnet" image fails at +## launch with "No frameworks were found". Use the aspnetcore base instead. +#FROM mcr.microsoft.com/dotnet/aspnet:9.0.3-noble-amd64 AS base +FROM dhi.io/aspnetcore:9.0.16-debian13@sha256:961647e80202ce33fc06472dda4e7ae2d2bc56d819aee6742602f70047b13dc7 AS base ARG BUILD_VERSION WORKDIR /app From afeed927756bdc36c4e6763650c071d9874549bb Mon Sep 17 00:00:00 2001 From: Shawn Jackson Date: Mon, 22 Jun 2026 13:14:26 -0500 Subject: [PATCH 2/2] RE1-T114 PR#413 fixes --- Core/Resgrid.Services/DepartmentSettingsService.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Core/Resgrid.Services/DepartmentSettingsService.cs b/Core/Resgrid.Services/DepartmentSettingsService.cs index 700624657..194521ddc 100644 --- a/Core/Resgrid.Services/DepartmentSettingsService.cs +++ b/Core/Resgrid.Services/DepartmentSettingsService.cs @@ -47,6 +47,11 @@ public DepartmentSettingsService(IDepartmentSettingsRepository departmentSetting if (savedSetting == null) { + // First-time write still needs to clear any cache populated by the fallback + // "new DepartmentModuleSettings()" in GetDepartmentModuleSettingsAsync (cached 365 days). + if (type == DepartmentSettingTypes.ModuleSettings) + await _cacheProvider.RemoveAsync(string.Format(ModuleSettingsCacheKey, departmentId)); + DepartmentSetting newSetting = new DepartmentSetting(); newSetting.DepartmentId = departmentId; newSetting.Setting = setting;