From 59cc5584c6c4b870de193eb642e192f36d65b9d1 Mon Sep 17 00:00:00 2001 From: ta264 Date: Sun, 14 Apr 2019 13:09:22 +0100 Subject: [PATCH] Fixed: Slower startup loop on DB initialization failure Wrap any exception thrown in a LidarrStartupException to trigger the existing bootloop code. We have to catch the generic Exception class since FluentMigrator rethrows all exceptions as a generic Exception. --- src/NzbDrone.Core/Datastore/DbFactory.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/NzbDrone.Core/Datastore/DbFactory.cs b/src/NzbDrone.Core/Datastore/DbFactory.cs index 8920fdec6..ed7698286 100644 --- a/src/NzbDrone.Core/Datastore/DbFactory.cs +++ b/src/NzbDrone.Core/Datastore/DbFactory.cs @@ -6,6 +6,7 @@ using NzbDrone.Common.Composition; using NzbDrone.Common.Disk; using NzbDrone.Common.EnvironmentInfo; +using NzbDrone.Common.Exceptions; using NzbDrone.Common.Instrumentation; using NzbDrone.Core.Datastore.Migration.Framework; @@ -42,7 +43,7 @@ private static void InitializeEnvironment() Environment.SetEnvironmentVariable("No_PreLoadSQLite", "true"); } - public static void RegisterDatabase(IContainer container) + public static void RegisterDatabase(IContainer container) { var mainDb = new MainDatabase(container.Resolve().Create()); @@ -127,6 +128,10 @@ private void CreateMain(string connectionString, MigrationContext migrationConte throw new CorruptDatabaseException("Database file: {0} is corrupt, restore from backup if available. See: https://github.com/Lidarr/Lidarr/wiki/FAQ#i-am-getting-an-error-database-disk-image-is-malformed", e, fileName); } + catch (Exception e) + { + throw new LidarrStartupException(e, "Error creating main database"); + } } private void CreateLog(string connectionString, MigrationContext migrationContext) @@ -155,6 +160,10 @@ private void CreateLog(string connectionString, MigrationContext migrationContex _migrationController.Migrate(connectionString, migrationContext); } + catch (Exception e) + { + throw new LidarrStartupException(e, "Error creating log database"); + } } } }