This commit is contained in:
2018-11-15 17:52:10 +00:00
parent e479964fce
commit 8b23577957
3 changed files with 10 additions and 9 deletions

View File

@@ -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);
}

View File

@@ -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))
{

View File

@@ -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();
}