From 034c0b95b2f9cc6440bac8b5844abfdc97db8990 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 17 Oct 2015 11:05:12 -0400 Subject: 3.0.5768.1 --- .../Channels/ChannelManager.cs | 34 ++++++++-------------- .../Persistence/SqliteItemRepository.cs | 14 ++++----- 2 files changed, 18 insertions(+), 30 deletions(-) (limited to 'MediaBrowser.Server.Implementations') diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs index eccce75d4..1bb8c21bf 100644 --- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs +++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs @@ -42,6 +42,7 @@ namespace MediaBrowser.Server.Implementations.Channels private readonly IFileSystem _fileSystem; private readonly IJsonSerializer _jsonSerializer; private readonly IHttpClient _httpClient; + private readonly IProviderManager _providerManager; private readonly ILocalizationManager _localization; private readonly ConcurrentDictionary _refreshedItems = new ConcurrentDictionary(); @@ -51,7 +52,7 @@ namespace MediaBrowser.Server.Implementations.Channels private Timer _refreshTimer; private Timer _clearDownloadCountsTimer; - public ChannelManager(IUserManager userManager, IDtoService dtoService, ILibraryManager libraryManager, ILogger logger, IServerConfigurationManager config, IFileSystem fileSystem, IUserDataManager userDataManager, IJsonSerializer jsonSerializer, ILocalizationManager localization, IHttpClient httpClient) + public ChannelManager(IUserManager userManager, IDtoService dtoService, ILibraryManager libraryManager, ILogger logger, IServerConfigurationManager config, IFileSystem fileSystem, IUserDataManager userDataManager, IJsonSerializer jsonSerializer, ILocalizationManager localization, IHttpClient httpClient, IProviderManager providerManager) { _userManager = userManager; _dtoService = dtoService; @@ -63,6 +64,7 @@ namespace MediaBrowser.Server.Implementations.Channels _jsonSerializer = jsonSerializer; _localization = localization; _httpClient = httpClient; + _providerManager = providerManager; _refreshTimer = new Timer(s => _refreshedItems.Clear(), null, TimeSpan.FromHours(3), TimeSpan.FromHours(3)); _clearDownloadCountsTimer = new Timer(s => _downloadCounts.Clear(), null, TimeSpan.FromHours(24), TimeSpan.FromHours(24)); @@ -649,7 +651,7 @@ namespace MediaBrowser.Server.Implementations.Channels var internalItems = await Task.WhenAll(itemTasks).ConfigureAwait(false); internalItems = ApplyFilters(internalItems, query.Filters, user).ToArray(); - await RefreshIfNeeded(internalItems, new Progress(), cancellationToken).ConfigureAwait(false); + RefreshIfNeeded(internalItems); if (query.StartIndex.HasValue) { @@ -814,7 +816,7 @@ namespace MediaBrowser.Server.Implementations.Channels var internalResult = await GetAllMediaInternal(query, cancellationToken).ConfigureAwait(false); - await RefreshIfNeeded(internalResult.Items, new Progress(), cancellationToken).ConfigureAwait(false); + RefreshIfNeeded(internalResult.Items); var dtoOptions = new DtoOptions(); @@ -954,7 +956,7 @@ namespace MediaBrowser.Server.Implementations.Channels } } - return await GetReturnItems(internalItems, providerTotalRecordCount, user, query, progress, cancellationToken).ConfigureAwait(false); + return await GetReturnItems(internalItems, providerTotalRecordCount, user, query).ConfigureAwait(false); } public async Task> GetChannelItems(ChannelItemQuery query, CancellationToken cancellationToken) @@ -1123,9 +1125,7 @@ namespace MediaBrowser.Server.Implementations.Channels private async Task> GetReturnItems(IEnumerable items, int? totalCountFromProvider, User user, - ChannelItemQuery query, - IProgress progress, - CancellationToken cancellationToken) + ChannelItemQuery query) { items = ApplyFilters(items, query.Filters, user); @@ -1148,7 +1148,7 @@ namespace MediaBrowser.Server.Implementations.Channels } var returnItemArray = all.ToArray(); - await RefreshIfNeeded(returnItemArray, progress, cancellationToken).ConfigureAwait(false); + RefreshIfNeeded(returnItemArray); return new QueryResult { @@ -1272,32 +1272,22 @@ namespace MediaBrowser.Server.Implementations.Channels return item; } - private async Task RefreshIfNeeded(BaseItem[] programs, IProgress progress, CancellationToken cancellationToken) + private void RefreshIfNeeded(BaseItem[] programs) { - var numComplete = 0; - var numItems = programs.Length; - foreach (var program in programs) { - await RefreshIfNeeded(program, cancellationToken).ConfigureAwait(false); - - numComplete++; - double percent = numComplete; - percent /= numItems; - progress.Report(percent * 100); + RefreshIfNeeded(program); } } - private readonly Task _cachedTask = Task.FromResult(true); - private Task RefreshIfNeeded(BaseItem program, CancellationToken cancellationToken) + private void RefreshIfNeeded(BaseItem program) { if (!_refreshedItems.ContainsKey(program.Id)) { _refreshedItems.TryAdd(program.Id, true); - return program.RefreshMetadata(cancellationToken); + _providerManager.QueueRefresh(program.Id, new MetadataRefreshOptions(_fileSystem)); } - return _cachedTask; } internal IChannel GetChannelProvider(Channel channel) diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index cede9350e..49b1f1821 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -225,19 +225,18 @@ namespace MediaBrowser.Server.Implementations.Persistence var columns = string.Join(",", _mediaStreamSaveColumns); string[] queries = { - "INSERT INTO mediastreams("+columns+") SELECT "+columns+" FROM MediaInfoOld.mediastreams;" + "REPLACE INTO mediastreams("+columns+") SELECT "+columns+" FROM MediaInfoOld.mediastreams;" }; try { _connection.RunQueries(queries, _logger); + File.Delete(file); } catch (Exception ex) { - throw ex; + _logger.ErrorException("Error migrating media info database", ex); } - - File.Delete(file); } private void MigrateChapters(string file) @@ -247,19 +246,18 @@ namespace MediaBrowser.Server.Implementations.Persistence SqliteExtensions.Attach(_connection, backupFile, "ChaptersOld"); string[] queries = { - "INSERT INTO "+ChaptersTableName+"(ItemId, ChapterIndex, StartPositionTicks, Name, ImagePath) SELECT ItemId, ChapterIndex, StartPositionTicks, Name, ImagePath FROM ChaptersOld.Chapters;" + "REPLACE INTO "+ChaptersTableName+"(ItemId, ChapterIndex, StartPositionTicks, Name, ImagePath) SELECT ItemId, ChapterIndex, StartPositionTicks, Name, ImagePath FROM ChaptersOld.Chapters;" }; try { _connection.RunQueries(queries, _logger); + File.Delete(file); } catch (Exception ex) { - throw ex; + _logger.ErrorException("Error migrating chapter database", ex); } - - File.Delete(file); } /// -- cgit v1.2.3