From fbd052abfc2724fcb151582746c9783d7ab8a97a Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 8 May 2013 16:58:52 -0400 Subject: removed local trailers and special features from memory --- .../Library/LibraryManager.cs | 55 ++--------- .../ScheduledTasks/ImageCleanupTask.cs | 28 +++--- .../ScheduledTasks/VideoImagesTask.cs | 15 ++- .../Sqlite/SQLiteDisplayPreferencesRepository.cs | 42 +++++---- .../Sqlite/SQLiteItemRepository.cs | 103 +++++++++++++-------- .../Sqlite/SQLiteRepository.cs | 16 ++-- .../Sqlite/SQLiteUserDataRepository.cs | 70 +++++++------- .../Sqlite/SQLiteUserRepository.cs | 70 +++++++------- 8 files changed, 199 insertions(+), 200 deletions(-) (limited to 'MediaBrowser.Server.Implementations') diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index e0f2fee13..65905b082 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -4,7 +4,6 @@ using MediaBrowser.Common.ScheduledTasks; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; @@ -267,16 +266,6 @@ namespace MediaBrowser.Server.Implementations.Library items.Add(RootFolder); - var specialFeatures = items.OfType().SelectMany(i => i.SpecialFeatures).ToList(); - var localTrailers = items.SelectMany(i => i.LocalTrailers).ToList(); - var themeSongs = items.SelectMany(i => i.ThemeSongs).ToList(); - var themeVideos = items.SelectMany(i => i.ThemeVideos).ToList(); - - items.AddRange(specialFeatures); - items.AddRange(localTrailers); - items.AddRange(themeSongs); - items.AddRange(themeVideos); - // Need to use DistinctBy Id because there could be multiple instances with the same id // due to sharing the default library var userRootFolders = _userManager.Users.Select(i => i.RootFolder) @@ -304,39 +293,6 @@ namespace MediaBrowser.Server.Implementations.Library private void UpdateItemInLibraryCache(BaseItem item) { LibraryItemsCache.AddOrUpdate(item.Id, item, delegate { return item; }); - - foreach (var subItem in item.LocalTrailers) - { - // Prevent access to foreach variable in closure - var copy = subItem; - LibraryItemsCache.AddOrUpdate(subItem.Id, subItem, delegate { return copy; }); - } - - foreach (var subItem in item.ThemeSongs) - { - // Prevent access to foreach variable in closure - var copy = subItem; - LibraryItemsCache.AddOrUpdate(subItem.Id, subItem, delegate { return copy; }); - } - - foreach (var subItem in item.ThemeVideos) - { - // Prevent access to foreach variable in closure - var copy = subItem; - LibraryItemsCache.AddOrUpdate(subItem.Id, subItem, delegate { return copy; }); - } - - var movie = item as Movie; - - if (movie != null) - { - foreach (var subItem in movie.SpecialFeatures) - { - // Prevent access to foreach variable in closure - var special1 = subItem; - LibraryItemsCache.AddOrUpdate(subItem.Id, subItem, delegate { return special1; }); - } - } } /// @@ -661,8 +617,6 @@ namespace MediaBrowser.Server.Implementations.Library { cancellationToken.ThrowIfCancellationRequested(); - _logger.Debug("Getting {0}: {1}", typeof(T).Name, name); - path = Path.Combine(path, FileSystem.GetValidFilename(name)); var fileInfo = new DirectoryInfo(path); @@ -968,9 +922,12 @@ namespace MediaBrowser.Server.Implementations.Library BaseItem item; - LibraryItemsCache.TryGetValue(id, out item); + if (LibraryItemsCache.TryGetValue(id, out item)) + { + return item; + } - return item; + return ItemRepository.GetItem(id); } /// @@ -1130,7 +1087,7 @@ namespace MediaBrowser.Server.Implementations.Library /// Task{BaseItem}. public BaseItem RetrieveItem(Guid id) { - return ItemRepository.RetrieveItem(id); + return ItemRepository.GetItem(id); } /// diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/ImageCleanupTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/ImageCleanupTask.cs index d308cb74b..7087c0421 100644 --- a/MediaBrowser.Server.Implementations/ScheduledTasks/ImageCleanupTask.cs +++ b/MediaBrowser.Server.Implementations/ScheduledTasks/ImageCleanupTask.cs @@ -3,6 +3,7 @@ using MediaBrowser.Controller; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.Logging; using System; using System.Collections.Generic; @@ -28,6 +29,7 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks private readonly ILogger _logger; private readonly ILibraryManager _libraryManager; private readonly IServerApplicationPaths _appPaths; + private readonly IItemRepository _itemRepo; /// /// Initializes a new instance of the class. @@ -36,12 +38,13 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks /// The logger. /// The library manager. /// The app paths. - public ImageCleanupTask(Kernel kernel, ILogger logger, ILibraryManager libraryManager, IServerApplicationPaths appPaths) + public ImageCleanupTask(Kernel kernel, ILogger logger, ILibraryManager libraryManager, IServerApplicationPaths appPaths, IItemRepository itemRepo) { _kernel = kernel; _logger = logger; _libraryManager = libraryManager; _appPaths = appPaths; + _itemRepo = itemRepo; } /// @@ -138,20 +141,14 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks images = images.Concat(item.ScreenshotImagePaths); } - if (item.LocalTrailers != null) - { - images = item.LocalTrailers.Aggregate(images, (current, subItem) => current.Concat(GetPathsInUse(subItem))); - } + var localTrailers = _itemRepo.GetItems(item.LocalTrailerIds).ToList(); + images = localTrailers.Aggregate(images, (current, subItem) => current.Concat(GetPathsInUse(subItem))); - if (item.ThemeSongs != null) - { - images = item.ThemeSongs.Aggregate(images, (current, subItem) => current.Concat(GetPathsInUse(subItem))); - } + var themeSongs = _itemRepo.GetItems(item.ThemeSongIds).ToList(); + images = themeSongs.Aggregate(images, (current, subItem) => current.Concat(GetPathsInUse(subItem))); - if (item.ThemeVideos != null) - { - images = item.ThemeVideos.Aggregate(images, (current, subItem) => current.Concat(GetPathsInUse(subItem))); - } + var themeVideos = _itemRepo.GetItems(item.ThemeVideoIds).ToList(); + images = themeVideos.Aggregate(images, (current, subItem) => current.Concat(GetPathsInUse(subItem))); var video = item as Video; @@ -162,9 +159,10 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks var movie = item as Movie; - if (movie != null && movie.SpecialFeatures != null) + if (movie != null) { - images = movie.SpecialFeatures.Aggregate(images, (current, subItem) => current.Concat(GetPathsInUse(subItem))); + var specialFeattures = _itemRepo.GetItems(movie.SpecialFeatureIds).ToList(); + images = specialFeattures.Aggregate(images, (current, subItem) => current.Concat(GetPathsInUse(subItem))); } return images; diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs index d7863c0ba..dcceb382c 100644 --- a/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs +++ b/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs @@ -5,6 +5,7 @@ using MediaBrowser.Controller; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Persistence; using MediaBrowser.Controller.Providers.MediaInfo; using MediaBrowser.Model.Entities; using System; @@ -43,6 +44,8 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks /// private readonly IIsoManager _isoManager; + private readonly IItemRepository _itemRepo; + private readonly ILogger _logger; /// @@ -67,11 +70,12 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks /// The log manager. /// The media encoder. /// The iso manager. - public VideoImagesTask(ILibraryManager libraryManager, ILogManager logManager, IMediaEncoder mediaEncoder, IIsoManager isoManager) + public VideoImagesTask(ILibraryManager libraryManager, ILogManager logManager, IMediaEncoder mediaEncoder, IIsoManager isoManager, IItemRepository itemRepo) { _libraryManager = libraryManager; _mediaEncoder = mediaEncoder; _isoManager = isoManager; + _itemRepo = itemRepo; _logger = logManager.GetLogger(GetType().Name); ImageCache = new FileSystemRepository(Kernel.Instance.FFMpegManager.VideoImagesDataPath); @@ -205,15 +209,18 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks { var allItems = sourceItems.ToList(); - var localTrailers = allItems.SelectMany(i => i.LocalTrailers); - var themeVideos = allItems.SelectMany(i => i.ThemeVideos); + var localTrailers = allItems.SelectMany(i => _itemRepo.GetItems(i.LocalTrailerIds).Cast