From 656ed709f3a27994d63d6512214f96e4eadfa031 Mon Sep 17 00:00:00 2001 From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com> Date: Mon, 6 Oct 2025 11:35:49 +0100 Subject: [PATCH] Exit non-zero on fault (#1137) --- .../Speckle.Importers.JobProcessor/Program.cs | 15 +++++++++++++-- .../Internal/ImporterInstance.cs | 2 ++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Importers/Rhino/Speckle.Importers.JobProcessor/Program.cs b/Importers/Rhino/Speckle.Importers.JobProcessor/Program.cs index c0faf9d40..ab3ee2618 100644 --- a/Importers/Rhino/Speckle.Importers.JobProcessor/Program.cs +++ b/Importers/Rhino/Speckle.Importers.JobProcessor/Program.cs @@ -10,16 +10,27 @@ namespace Speckle.Importers.JobProcessor; public static class Program { - public static async Task Main(string[] args) + public static async Task Main(string[] args) { // Dapper doesn't understand how to handle JSON deserialization, so we need to tell it what types can be deserialzied SqlMapper.AddTypeHandler(new JsonHandler()); var host = ConfigureAppHost(args); - ConfigureTopLevelLogs(host.Services.GetRequiredService>()); + var backgroundServiceTasks = host + .Services.GetServices() + .OfType() + .Select(s => s.ExecuteTask); await host.RunAsync(); + + if (backgroundServiceTasks.Any(t => t?.IsFaulted == true)) + { + //https://github.com/dotnet/runtime/issues/67146 + return -1; + } + + return 0; } private static IHost ConfigureAppHost(string[] args) diff --git a/Importers/Rhino/Speckle.Importers.Rhino/Internal/ImporterInstance.cs b/Importers/Rhino/Speckle.Importers.Rhino/Internal/ImporterInstance.cs index 374964b9e..872631db4 100644 --- a/Importers/Rhino/Speckle.Importers.Rhino/Internal/ImporterInstance.cs +++ b/Importers/Rhino/Speckle.Importers.Rhino/Internal/ImporterInstance.cs @@ -52,6 +52,8 @@ internal sealed class ImporterInstance(Sender sender, ILogger try { using var config = GetConfig(Path.GetExtension(args.FilePath)); + logger.LogInformation("Opening file {FilePath}", args.FilePath); + _rhinoDoc = config.OpenInHeadlessDocument(args.FilePath); RhinoDoc.ActiveDoc = _rhinoDoc;