Add StatusWorker sanity checks to prevent soft-stopped background service behavior

This commit is contained in:
Leendert de Borst
2026-02-19 14:19:38 +01:00
parent aac02e3ddb
commit 716fcc0a85
2 changed files with 19 additions and 0 deletions

View File

@@ -223,6 +223,14 @@
service.CurrentStatus = entry.CurrentStatus;
service.DesiredStatus = entry.DesiredStatus;
}
else
{
// No record exists - service hasn't started yet or database issue.
// Show as offline/stopped state so the button displays red (not transparent).
service.IsHeartBeatValid = false;
service.CurrentStatus = "Stopped";
service.DesiredStatus = string.Empty;
}
}
await InvokeAsync(StateHasChanged);

View File

@@ -26,6 +26,17 @@ public class StatusWorker(ILogger<StatusWorker> logger, Func<IWorkerStatusDbCont
/// <returns>Task.</returns>
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
try
{
using var initDbContext = createDbContext();
_dbContext = initDbContext;
await GetOrCreateInitialStatusRecordAsync();
}
catch (Exception e)
{
logger.LogError(e, "Failed to initialize service status record for {ServiceName}", globalServiceStatus.ServiceName);
}
while (!stoppingToken.IsCancellationRequested)
{
using var dbContext = createDbContext();