New: Retry Postgres connection 3 times (with 5 second sleep) on Startup

(cherry picked from commit dbca393772d7f558b45a780a6767187bf5900a23)
pull/3106/head
Qstick 2 years ago
parent c006b66aa4
commit 48d7a227f3

@ -1,6 +1,7 @@
using System;
using System.Data.Common;
using System.Data.SQLite;
using System.Net.Sockets;
using NLog;
using Npgsql;
using NzbDrone.Common.Disk;
@ -124,6 +125,37 @@ namespace NzbDrone.Core.Datastore
throw new CorruptDatabaseException("Database file: {0} is corrupt, restore from backup if available. See: https://wiki.servarr.com/lidarr/faq#i-am-getting-an-error-database-disk-image-is-malformed", e, fileName);
}
catch (NpgsqlException e)
{
if (e.InnerException is SocketException)
{
var retryCount = 3;
while (true)
{
Logger.Error(e, "Failure to connect to Postgres DB, {0} retries remaining", retryCount);
try
{
_migrationController.Migrate(connectionString, migrationContext);
}
catch (Exception ex)
{
if (--retryCount > 0)
{
System.Threading.Thread.Sleep(5000);
continue;
}
throw new LidarrStartupException(ex, "Error creating main database");
}
}
}
else
{
throw new LidarrStartupException(e, "Error creating main database");
}
}
catch (Exception e)
{
throw new LidarrStartupException(e, "Error creating main database");

Loading…
Cancel
Save