From 4401a91d357aa1a79246d083fced1030a8844807 Mon Sep 17 00:00:00 2001 From: Marcel Baumgartner Date: Mon, 3 Jun 2024 20:04:01 +0200 Subject: [PATCH] Improved error handling when converting and sending server configurations to daemon --- ...ersControllers.cs => ServersController.cs} | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) rename Moonlight/Features/Servers/Http/Controllers/{ServersControllers.cs => ServersController.cs} (87%) diff --git a/Moonlight/Features/Servers/Http/Controllers/ServersControllers.cs b/Moonlight/Features/Servers/Http/Controllers/ServersController.cs similarity index 87% rename from Moonlight/Features/Servers/Http/Controllers/ServersControllers.cs rename to Moonlight/Features/Servers/Http/Controllers/ServersController.cs index 67ff35e3..ac7c7b9b 100644 --- a/Moonlight/Features/Servers/Http/Controllers/ServersControllers.cs +++ b/Moonlight/Features/Servers/Http/Controllers/ServersController.cs @@ -14,12 +14,12 @@ namespace Moonlight.Features.Servers.Http.Controllers; [ApiController] [Route("api/servers")] [EnableNodeMiddleware] -public class ServersControllers : Controller +public class ServersController : Controller { private readonly Repository ServerRepository; private readonly Repository BackupRepository; - public ServersControllers(Repository serverRepository, Repository backupRepository) + public ServersController(Repository serverRepository, Repository backupRepository) { ServerRepository = serverRepository; BackupRepository = backupRepository; @@ -56,10 +56,20 @@ public class ServersControllers : Controller .Where(x => x.Node.Id == node.Id) .ToArray(); - // Convert the data to server configurations - var serverConfigurations = servers - .Select(x => x.ToServerConfiguration()) - .ToArray(); + var serverConfigurations = new List(); + + foreach (var server in servers) + { + try + { + serverConfigurations.Add(server.ToServerConfiguration()); + } + catch (Exception e) + { + Logger.Error($"An error occured while sending server {server.Id} (Image: {server.Image.Name}) to daemon. This may indicate a corrupt or broken image/server. Skipping this server"); + Logger.Error(e); + } + } // Send the amount of configs the node will receive await websocketStream.SendPacket(servers.Length);