From f618650fbd4d97846322b677dcbaecc8dc41c405 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 7 Jul 2016 11:55:39 -0400 Subject: [PATCH] revert clean task changes --- .../Persistence/CleanDatabaseScheduledTask.cs | 91 +++++++------------ 1 file changed, 33 insertions(+), 58 deletions(-) diff --git a/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs b/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs index c321e5f015..b11a3e4968 100644 --- a/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs +++ b/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs @@ -142,77 +142,52 @@ namespace MediaBrowser.Server.Implementations.Persistence } } - private Task UpdateToLatestSchema(CancellationToken cancellationToken, IProgress progress) + private async Task UpdateToLatestSchema(CancellationToken cancellationToken, IProgress progress) { - return UpdateToLatestSchema(0, 0, null, cancellationToken, progress); - } - - private async Task UpdateToLatestSchema(int queryStartIndex, int progressStartIndex, int? totalRecordCount, CancellationToken cancellationToken, IProgress progress) - { - IEnumerable items; - int numItemsToSave; - var pageSize = 1000; - - if (totalRecordCount.HasValue) - { - var list = _libraryManager.GetItemList(new InternalItemsQuery - { - IsCurrentSchema = false, - ExcludeItemTypes = new[] { typeof(LiveTvProgram).Name }, - StartIndex = queryStartIndex, - Limit = pageSize - - }).ToList(); - - items = list; - numItemsToSave = list.Count; - } - else + var itemIds = _libraryManager.GetItemIds(new InternalItemsQuery { - var itemsResult = _libraryManager.GetItemsResult(new InternalItemsQuery - { - IsCurrentSchema = false, - ExcludeItemTypes = new[] { typeof(LiveTvProgram).Name }, - StartIndex = queryStartIndex, - Limit = pageSize - }); - - totalRecordCount = itemsResult.TotalRecordCount; - items = itemsResult.Items; - numItemsToSave = itemsResult.Items.Length; - } + IsCurrentSchema = false, + ExcludeItemTypes = new[] { typeof(LiveTvProgram).Name } + }); - var numItems = totalRecordCount.Value; + var numComplete = 0; + var numItems = itemIds.Count; _logger.Debug("Upgrading schema for {0} items", numItems); - if (numItemsToSave > 0) + foreach (var itemId in itemIds) { - try - { - await _itemRepo.SaveItems(items, cancellationToken).ConfigureAwait(false); - } - catch (OperationCanceledException) - { - throw; - } - catch (Exception ex) + cancellationToken.ThrowIfCancellationRequested(); + + if (itemId != Guid.Empty) { - _logger.ErrorException("Error saving item", ex); + // Somehow some invalid data got into the db. It probably predates the boundary checking + var item = _libraryManager.GetItemById(itemId); + + if (item != null) + { + try + { + await _itemRepo.SaveItem(item, cancellationToken).ConfigureAwait(false); + } + catch (OperationCanceledException) + { + throw; + } + catch (Exception ex) + { + _logger.ErrorException("Error saving item", ex); + } + } } - progressStartIndex += pageSize; - double percent = progressStartIndex; + numComplete++; + double percent = numComplete; percent /= numItems; progress.Report(percent * 100); - - var newStartIndex = queryStartIndex + (pageSize - numItemsToSave); - await UpdateToLatestSchema(newStartIndex, progressStartIndex, totalRecordCount, cancellationToken, progress).ConfigureAwait(false); - } - else - { - progress.Report(100); } + + progress.Report(100); } private async Task CleanDeadItems(CancellationToken cancellationToken, IProgress progress)