From 8b2357795777353dc35b520a437436690563003e Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 15 Nov 2018 17:52:10 +0000 Subject: [PATCH] --- server/AyaNova/Startup.cs | 8 ++++---- server/AyaNova/util/DbUtil.cs | 9 +++++---- server/AyaNova/util/RetryHelper.cs | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/server/AyaNova/Startup.cs b/server/AyaNova/Startup.cs index d5a9fec3..2a912d1f 100644 --- a/server/AyaNova/Startup.cs +++ b/server/AyaNova/Startup.cs @@ -78,11 +78,11 @@ namespace AyaNova //parse the connection string properly DbUtil.ParseConnectionString(_log, _connectionString); - //Test for server - //Will retry 10 times every 3 seconds for a total of 30 seconds - if (!DbUtil.DatabaseServerExists(_log, "BOOT: waiting for db server")) + //Probe for database server + //Will retry every 10 seconds for up to 5 minutes before bailing + if (!DbUtil.DatabaseServerExists(_log, "BOOT: waiting for db server ")) { - var err = $"BOOT: E1000 - AyaNova can't connect to the database server after trying for 30 seconds (connection string is:\"{DbUtil.DisplayableConnectionString}\")"; + var err = $"BOOT: E1000 - AyaNova can't connect to the database server after trying for 5 minutes (connection string is:\"{DbUtil.DisplayableConnectionString}\")"; _log.LogCritical(err); throw new System.ApplicationException(err); } diff --git a/server/AyaNova/util/DbUtil.cs b/server/AyaNova/util/DbUtil.cs index 1e4ee38a..1ffbc03d 100644 --- a/server/AyaNova/util/DbUtil.cs +++ b/server/AyaNova/util/DbUtil.cs @@ -120,17 +120,18 @@ namespace AyaNova.Util /////////////////////////////////////////// //Verify that server exists + // spend up to 5 minutes waiting for it to come up before bailing // internal static bool DatabaseServerExists(ILogger log, string logPrepend) { try { - //Try every 3 seconds for 10 tries before giving up + //Try every 10 seconds for 30 tries before giving up (5 minutes total) - var maxRetryAttempts = 10; - var pauseBetweenFailures = TimeSpan.FromSeconds(3); - RetryHelper.RetryOnException(maxRetryAttempts, pauseBetweenFailures, log, logPrepend + AdminConnectionString, () => + var maxRetryAttempts = 30; + var pauseBetweenFailures = TimeSpan.FromSeconds(10); + RetryHelper.RetryOnException(maxRetryAttempts, pauseBetweenFailures, log, logPrepend + DisplayableConnectionString, () => { using (var conn = new Npgsql.NpgsqlConnection(AdminConnectionString)) { diff --git a/server/AyaNova/util/RetryHelper.cs b/server/AyaNova/util/RetryHelper.cs index fec85af7..d52a37f7 100644 --- a/server/AyaNova/util/RetryHelper.cs +++ b/server/AyaNova/util/RetryHelper.cs @@ -36,7 +36,7 @@ namespace AyaNova.Util if (attempts == times) throw; - log.LogError(ex, $"{logPrepend} Exception caught on attempt {attempts} - will retry after delay {delay}"); + log.LogError(ex, $"{logPrepend} Exception caught on attempt {attempts} of {times} - will retry after delay {delay}"); Task.Delay(delay).Wait(); }