From 4b263d59a2e748fe489c9b72a8b640961419ab97 Mon Sep 17 00:00:00 2001 From: "manuel.fragner" Date: Mon, 13 Mar 2023 10:25:59 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20[membership-service]=20Retry=20d?= =?UTF-8?q?b=20connection,=20end=20program=20if=20unsuccessful?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When using ArgoCD for deployment, "wait:true" to wait for the database in the skaffold.yaml, is not applied, instead all services are created in parallel. The membership-service tries to connect once to the not yet ready db, and then waits, doing nothing. To mitigate this the option EnableRetryOnFailure was added. Now the service tries in a timespan of 60 seconds to connect ten times, and if it still fails exists the program, causing a recreation of the pod. --- src/membership-service/Program.cs | 1 + src/membership-service/Startup.cs | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/membership-service/Program.cs b/src/membership-service/Program.cs index 7c7ecb76..6bc0a0d6 100644 --- a/src/membership-service/Program.cs +++ b/src/membership-service/Program.cs @@ -49,6 +49,7 @@ private static void CreateDbIfNotExists(IHost host) { var logger = services.GetRequiredService>(); logger.LogError(ex, "An error occurred creating the DB."); + System.Environment.Exit(1); } } } diff --git a/src/membership-service/Startup.cs b/src/membership-service/Startup.cs index 96697e35..6df8f672 100644 --- a/src/membership-service/Startup.cs +++ b/src/membership-service/Startup.cs @@ -49,8 +49,12 @@ public void ConfigureServices(IServiceCollection services) string connectString = $"Server={dbHost};Port=3306;Database=memberships;user=root;password={dbPwd}"; services.AddDbContext( options => options.UseMySql( - connectString, - new MySqlServerVersion(new Version(10, 5, 8)) + connectString, + new MySqlServerVersion(new Version(10, 5, 8)), + options => options.EnableRetryOnFailure( + maxRetryCount: 10, + maxRetryDelay: System.TimeSpan.FromSeconds(60), + errorNumbersToAdd: null) ) );