From 0b5b409354909a0f446aea9f69ae4fd7eb6be35d Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 3 Feb 2016 17:42:33 -0500 Subject: [PATCH] update migration --- .../Persistence/CleanDatabaseScheduledTask.cs | 11 ++++++----- .../Persistence/SqliteItemRepository.cs | 6 ++++++ MediaBrowser.Server.Startup.Common/ApplicationHost.cs | 4 ++-- .../Migrations/DbMigration.cs | 2 +- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs b/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs index f7c6fe5025..5c600c249f 100644 --- a/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs +++ b/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs @@ -10,6 +10,7 @@ using MediaBrowser.Model.Logging; using System; using System.Collections.Generic; using System.Globalization; +using System.Linq; using System.Threading; using System.Threading.Tasks; using CommonIO; @@ -32,7 +33,7 @@ namespace MediaBrowser.Server.Implementations.Persistence private readonly ILocalizationManager _localization; private readonly ITaskManager _taskManager; - public const int MigrationVersion = 17; + public const int MigrationVersion = 20; public static bool EnableUnavailableMessage = false; public CleanDatabaseScheduledTask(ILibraryManager libraryManager, IItemRepository itemRepo, ILogger logger, IServerConfigurationManager config, IFileSystem fileSystem, IHttpServer httpServer, ILocalizationManager localization, ITaskManager taskManager) @@ -66,6 +67,10 @@ namespace MediaBrowser.Server.Implementations.Persistence { OnProgress(0); + // Ensure these objects are out of the database. + var rootChildren = _libraryManager.RootFolder.Children.ToList(); + rootChildren = _libraryManager.GetUserRootFolder().Children.ToList(); + var innerProgress = new ActionableProgress(); innerProgress.RegisterAction(p => { @@ -148,8 +153,6 @@ namespace MediaBrowser.Server.Implementations.Persistence if (itemId != Guid.Empty) { - LogMessage(string.Format("Querying item {0}", itemId)); - // Somehow some invalid data got into the db. It probably predates the boundary checking var item = _libraryManager.GetItemById(itemId); @@ -157,8 +160,6 @@ namespace MediaBrowser.Server.Implementations.Persistence { try { - LogMessage(string.Format("Saving item {0}", itemId)); - await _itemRepo.SaveItem(item, cancellationToken).ConfigureAwait(false); } catch (OperationCanceledException) diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index 7898dc1ef5..3dc37110e4 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -583,16 +583,22 @@ namespace MediaBrowser.Server.Implementations.Persistence CheckDisposed(); + _logger.Info("SaveItems waiting on write lock"); + await _writeLock.WaitAsync(cancellationToken).ConfigureAwait(false); IDbTransaction transaction = null; try { + _logger.Info("SaveItems creating transaction"); + transaction = _connection.BeginTransaction(); foreach (var item in items) { + _logger.Info("Saving {0}", item.Id); + cancellationToken.ThrowIfCancellationRequested(); var index = 0; diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs index 7f79653afe..46dfd4469f 100644 --- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs +++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs @@ -328,6 +328,8 @@ namespace MediaBrowser.Server.Startup.Common Logger.Info("Core startup complete"); HttpServer.GlobalResponse = null; + PerformPostInitMigrations(); + Parallel.ForEach(GetExports(), entryPoint => { try @@ -341,8 +343,6 @@ namespace MediaBrowser.Server.Startup.Common }); LogManager.RemoveConsoleOutput(); - - PerformPostInitMigrations(); } public override Task Init(IProgress progress) diff --git a/MediaBrowser.Server.Startup.Common/Migrations/DbMigration.cs b/MediaBrowser.Server.Startup.Common/Migrations/DbMigration.cs index 959543893c..5a70467f75 100644 --- a/MediaBrowser.Server.Startup.Common/Migrations/DbMigration.cs +++ b/MediaBrowser.Server.Startup.Common/Migrations/DbMigration.cs @@ -25,7 +25,7 @@ namespace MediaBrowser.Server.Startup.Common.Migrations Task.Run(async () => { - await Task.Delay(1000).ConfigureAwait(false); + await Task.Delay(100).ConfigureAwait(false); _taskManager.Execute(); });