From 2bb8d80168c19016bbab9446ce56b595ae182811 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Sa=CC=88rkikoski?= Date: Tue, 17 Mar 2026 15:03:52 +0200 Subject: [PATCH] Add exit codes to Main method for better error handling --- aspnetcore/src/Indexer/Program.cs | 36 ++++++++++++++++++------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/aspnetcore/src/Indexer/Program.cs b/aspnetcore/src/Indexer/Program.cs index ce37814a..45fd8d2b 100644 --- a/aspnetcore/src/Indexer/Program.cs +++ b/aspnetcore/src/Indexer/Program.cs @@ -15,7 +15,7 @@ public class Program { private const int DefaultQueryTimeout = 300; - public static async Task Main(string[] args) + public static async Task Main(string[] args) { var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); var configuration = new ConfigurationBuilder() @@ -30,24 +30,30 @@ public static async Task Main(string[] args) .ReadFrom.Configuration(configuration) .CreateLogger(); - // Create and configure the host to support dependency injection, configuration, etc. - var consoleHost = CreateHostBuilder(args).Build(); - - // Check if the database is ready for indexing. - var databasePreflightCheck = consoleHost.Services.GetRequiredService(); - if (!databasePreflightCheck.IsGood()) + try { - return; - } + var consoleHost = CreateHostBuilder(args).Build(); - // Get the "Main" service which handles the indexing. - var indexer = consoleHost.Services.GetRequiredService(); + var databasePreflightCheck = consoleHost.Services.GetRequiredService(); + if (!databasePreflightCheck.IsGood()) + { + return 1; + } - // Start indexing. - await indexer.Start(); + var indexer = consoleHost.Services.GetRequiredService(); + await indexer.Start(); - // Flush logs - Log.CloseAndFlush(); + return 0; + } + catch (Exception ex) + { + Log.Error(ex, "Indexer failed"); + return 1; + } + finally + { + Log.CloseAndFlush(); + } } private static IHostBuilder CreateHostBuilder(string[] args) => Host