aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Library
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-09-16 22:08:18 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-09-16 22:08:18 -0400
commit1007f242002b77db50e004a5a937395fe60f9289 (patch)
treeabfb4cd7f92fb23ddcc4368bd6bc3297fa73ef96 /MediaBrowser.Server.Implementations/Library
parentaaecc99d631e7ddfad2e5e3f171f8e0824fb2859 (diff)
reduce task allocations by making IBN api synchronous
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library')
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs121
-rw-r--r--MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs18
-rw-r--r--MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs13
-rw-r--r--MediaBrowser.Server.Implementations/Library/Validators/GameGenresValidator.cs10
-rw-r--r--MediaBrowser.Server.Implementations/Library/Validators/GenresValidator.cs8
-rw-r--r--MediaBrowser.Server.Implementations/Library/Validators/MusicGenresValidator.cs8
-rw-r--r--MediaBrowser.Server.Implementations/Library/Validators/PeoplePostScanTask.cs7
-rw-r--r--MediaBrowser.Server.Implementations/Library/Validators/StudiosValidator.cs8
8 files changed, 61 insertions, 132 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index 602f81c33..10fc8a586 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -590,144 +590,60 @@ namespace MediaBrowser.Server.Implementations.Library
/// Gets a Person
/// </summary>
/// <param name="name">The name.</param>
- /// <param name="allowSlowProviders">if set to <c>true</c> [allow slow providers].</param>
- /// <returns>Task{Person}.</returns>
- public Task<Person> GetPerson(string name, bool allowSlowProviders = false)
- {
- return GetPerson(name, CancellationToken.None, allowSlowProviders);
- }
-
- /// <summary>
- /// Gets a Person
- /// </summary>
- /// <param name="name">The name.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <param name="allowSlowProviders">if set to <c>true</c> [allow slow providers].</param>
- /// <param name="refreshMetadata">if set to <c>true</c> [force creation].</param>
/// <returns>Task{Person}.</returns>
- private Task<Person> GetPerson(string name, CancellationToken cancellationToken, bool allowSlowProviders = false, bool refreshMetadata = false)
+ public Person GetPerson(string name)
{
- return GetItemByName<Person>(ConfigurationManager.ApplicationPaths.PeoplePath, name, cancellationToken, allowSlowProviders, refreshMetadata);
+ return GetItemByName<Person>(ConfigurationManager.ApplicationPaths.PeoplePath, name);
}
/// <summary>
/// Gets a Studio
/// </summary>
/// <param name="name">The name.</param>
- /// <param name="allowSlowProviders">if set to <c>true</c> [allow slow providers].</param>
- /// <returns>Task{Studio}.</returns>
- public Task<Studio> GetStudio(string name, bool allowSlowProviders = false)
- {
- return GetStudio(name, CancellationToken.None, allowSlowProviders);
- }
-
- /// <summary>
- /// Gets the studio.
- /// </summary>
- /// <param name="name">The name.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <param name="allowSlowProviders">if set to <c>true</c> [allow slow providers].</param>
- /// <param name="refreshMetadata">if set to <c>true</c> [refresh metadata].</param>
/// <returns>Task{Studio}.</returns>
- internal Task<Studio> GetStudio(string name, CancellationToken cancellationToken, bool allowSlowProviders = false, bool refreshMetadata = false)
+ public Studio GetStudio(string name)
{
- return GetItemByName<Studio>(ConfigurationManager.ApplicationPaths.StudioPath, name, cancellationToken, allowSlowProviders, refreshMetadata);
+ return GetItemByName<Studio>(ConfigurationManager.ApplicationPaths.StudioPath, name);
}
/// <summary>
/// Gets a Genre
/// </summary>
/// <param name="name">The name.</param>
- /// <param name="allowSlowProviders">if set to <c>true</c> [allow slow providers].</param>
- /// <returns>Task{Genre}.</returns>
- public Task<Genre> GetGenre(string name, bool allowSlowProviders = false)
- {
- return GetGenre(name, CancellationToken.None, allowSlowProviders);
- }
-
- /// <summary>
- /// Gets the genre.
- /// </summary>
- /// <param name="name">The name.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <param name="allowSlowProviders">if set to <c>true</c> [allow slow providers].</param>
- /// <param name="refreshMetadata">if set to <c>true</c> [refresh metadata].</param>
/// <returns>Task{Genre}.</returns>
- internal Task<Genre> GetGenre(string name, CancellationToken cancellationToken, bool allowSlowProviders = false, bool refreshMetadata = false)
+ public Genre GetGenre(string name)
{
- return GetItemByName<Genre>(ConfigurationManager.ApplicationPaths.GenrePath, name, cancellationToken, allowSlowProviders, refreshMetadata);
+ return GetItemByName<Genre>(ConfigurationManager.ApplicationPaths.GenrePath, name);
}
/// <summary>
/// Gets the genre.
/// </summary>
/// <param name="name">The name.</param>
- /// <param name="allowSlowProviders">if set to <c>true</c> [allow slow providers].</param>
/// <returns>Task{MusicGenre}.</returns>
- public Task<MusicGenre> GetMusicGenre(string name, bool allowSlowProviders = false)
+ public MusicGenre GetMusicGenre(string name)
{
- return GetMusicGenre(name, CancellationToken.None, allowSlowProviders);
- }
-
- /// <summary>
- /// Gets the music genre.
- /// </summary>
- /// <param name="name">The name.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <param name="allowSlowProviders">if set to <c>true</c> [allow slow providers].</param>
- /// <param name="refreshMetadata">if set to <c>true</c> [refresh metadata].</param>
- /// <returns>Task{MusicGenre}.</returns>
- internal Task<MusicGenre> GetMusicGenre(string name, CancellationToken cancellationToken, bool allowSlowProviders = false, bool refreshMetadata = false)
- {
- return GetItemByName<MusicGenre>(ConfigurationManager.ApplicationPaths.MusicGenrePath, name, cancellationToken, allowSlowProviders, refreshMetadata);
+ return GetItemByName<MusicGenre>(ConfigurationManager.ApplicationPaths.MusicGenrePath, name);
}
/// <summary>
/// Gets the game genre.
/// </summary>
/// <param name="name">The name.</param>
- /// <param name="allowSlowProviders">if set to <c>true</c> [allow slow providers].</param>
/// <returns>Task{GameGenre}.</returns>
- public Task<GameGenre> GetGameGenre(string name, bool allowSlowProviders = false)
+ public GameGenre GetGameGenre(string name)
{
- return GetGameGenre(name, CancellationToken.None, allowSlowProviders);
- }
-
- /// <summary>
- /// Gets the game genre.
- /// </summary>
- /// <param name="name">The name.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <param name="allowSlowProviders">if set to <c>true</c> [allow slow providers].</param>
- /// <param name="refreshMetadata">if set to <c>true</c> [refresh metadata].</param>
- /// <returns>Task{GameGenre}.</returns>
- internal Task<GameGenre> GetGameGenre(string name, CancellationToken cancellationToken, bool allowSlowProviders = false, bool refreshMetadata = false)
- {
- return GetItemByName<GameGenre>(ConfigurationManager.ApplicationPaths.GameGenrePath, name, cancellationToken, allowSlowProviders, refreshMetadata);
+ return GetItemByName<GameGenre>(ConfigurationManager.ApplicationPaths.GameGenrePath, name);
}
/// <summary>
/// Gets a Genre
/// </summary>
/// <param name="name">The name.</param>
- /// <param name="allowSlowProviders">if set to <c>true</c> [allow slow providers].</param>
/// <returns>Task{Genre}.</returns>
- public Task<Artist> GetArtist(string name, bool allowSlowProviders = false)
+ public Artist GetArtist(string name)
{
- return GetArtist(name, CancellationToken.None, allowSlowProviders);
- }
-
- /// <summary>
- /// Gets the artist.
- /// </summary>
- /// <param name="name">The name.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <param name="allowSlowProviders">if set to <c>true</c> [allow slow providers].</param>
- /// <param name="refreshMetadata">if set to <c>true</c> [force creation].</param>
- /// <returns>Task{Artist}.</returns>
- internal Task<Artist> GetArtist(string name, CancellationToken cancellationToken, bool allowSlowProviders = false, bool refreshMetadata = false)
- {
- return GetItemByName<Artist>(ConfigurationManager.ApplicationPaths.ArtistsPath, name, cancellationToken, allowSlowProviders, refreshMetadata);
+ return GetItemByName<Artist>(ConfigurationManager.ApplicationPaths.ArtistsPath, name);
}
/// <summary>
@@ -739,17 +655,16 @@ namespace MediaBrowser.Server.Implementations.Library
/// Gets a Year
/// </summary>
/// <param name="value">The value.</param>
- /// <param name="allowSlowProviders">if set to <c>true</c> [allow slow providers].</param>
/// <returns>Task{Year}.</returns>
/// <exception cref="System.ArgumentOutOfRangeException"></exception>
- public Task<Year> GetYear(int value, bool allowSlowProviders = false)
+ public Year GetYear(int value)
{
if (value <= 0)
{
throw new ArgumentOutOfRangeException();
}
- return GetItemByName<Year>(ConfigurationManager.ApplicationPaths.YearPath, value.ToString(UsCulture), CancellationToken.None, allowSlowProviders);
+ return GetItemByName<Year>(ConfigurationManager.ApplicationPaths.YearPath, value.ToString(UsCulture));
}
/// <summary>
@@ -940,7 +855,9 @@ namespace MediaBrowser.Server.Implementations.Library
try
{
- await GetPerson(currentPerson.Name, cancellationToken, true, true).ConfigureAwait(false);
+ var item = GetPerson(currentPerson.Name);
+
+ await item.RefreshMetadata(cancellationToken).ConfigureAwait(false);
}
catch (IOException ex)
{
@@ -964,6 +881,10 @@ namespace MediaBrowser.Server.Implementations.Library
progress.Report(100);
_logger.Info("People validation complete");
+
+ // Bad practice, i know. But we keep a lot in memory, unfortunately.
+ GC.Collect(2, GCCollectionMode.Forced, true);
+ GC.Collect(2, GCCollectionMode.Forced, true);
}
/// <summary>
diff --git a/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs b/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs
index 6b37ee62f..43d0e4db7 100644
--- a/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs
+++ b/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs
@@ -97,7 +97,7 @@ namespace MediaBrowser.Server.Implementations.Library
/// <param name="searchTerm">The search term.</param>
/// <returns>IEnumerable{SearchHintResult}.</returns>
/// <exception cref="System.ArgumentNullException">searchTerm</exception>
- public async Task<IEnumerable<SearchHintInfo>> GetSearchHints(IEnumerable<BaseItem> inputItems, string searchTerm)
+ public Task<IEnumerable<SearchHintInfo>> GetSearchHints(IEnumerable<BaseItem> inputItems, string searchTerm)
{
if (string.IsNullOrEmpty(searchTerm))
{
@@ -143,7 +143,7 @@ namespace MediaBrowser.Server.Implementations.Library
{
try
{
- var artist = await _libraryManager.GetArtist(item).ConfigureAwait(false);
+ var artist = _libraryManager.GetArtist(item);
hints.Add(new Tuple<BaseItem, string, int>(artist, index.Item1, index.Item2));
}
@@ -169,7 +169,7 @@ namespace MediaBrowser.Server.Implementations.Library
{
try
{
- var genre = await _libraryManager.GetGenre(item).ConfigureAwait(false);
+ var genre = _libraryManager.GetGenre(item);
hints.Add(new Tuple<BaseItem, string, int>(genre, index.Item1, index.Item2));
}
@@ -195,7 +195,7 @@ namespace MediaBrowser.Server.Implementations.Library
{
try
{
- var genre = await _libraryManager.GetMusicGenre(item).ConfigureAwait(false);
+ var genre = _libraryManager.GetMusicGenre(item);
hints.Add(new Tuple<BaseItem, string, int>(genre, index.Item1, index.Item2));
}
@@ -221,7 +221,7 @@ namespace MediaBrowser.Server.Implementations.Library
{
try
{
- var genre = await _libraryManager.GetGameGenre(item).ConfigureAwait(false);
+ var genre = _libraryManager.GetGameGenre(item);
hints.Add(new Tuple<BaseItem, string, int>(genre, index.Item1, index.Item2));
}
@@ -246,7 +246,7 @@ namespace MediaBrowser.Server.Implementations.Library
{
try
{
- var studio = await _libraryManager.GetStudio(item).ConfigureAwait(false);
+ var studio = _libraryManager.GetStudio(item);
hints.Add(new Tuple<BaseItem, string, int>(studio, index.Item1, index.Item2));
}
@@ -272,7 +272,7 @@ namespace MediaBrowser.Server.Implementations.Library
{
try
{
- var person = await _libraryManager.GetPerson(item).ConfigureAwait(false);
+ var person = _libraryManager.GetPerson(item);
hints.Add(new Tuple<BaseItem, string, int>(person, index.Item1, index.Item2));
}
@@ -283,11 +283,13 @@ namespace MediaBrowser.Server.Implementations.Library
}
}
- return hints.Where(i => i.Item3 >= 0).OrderBy(i => i.Item3).Select(i => new SearchHintInfo
+ var returnValue = hints.Where(i => i.Item3 >= 0).OrderBy(i => i.Item3).Select(i => new SearchHintInfo
{
Item = i.Item1,
MatchedTerm = i.Item2
});
+
+ return Task.FromResult(returnValue);
}
/// <summary>
diff --git a/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs
index 54d816cb0..f41a2e60c 100644
--- a/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs
+++ b/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs
@@ -24,7 +24,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// <summary>
/// The _library manager
/// </summary>
- private readonly LibraryManager _libraryManager;
+ private readonly ILibraryManager _libraryManager;
/// <summary>
/// The _user manager
@@ -42,7 +42,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// <param name="libraryManager">The library manager.</param>
/// <param name="userManager">The user manager.</param>
/// <param name="logger">The logger.</param>
- public ArtistsValidator(LibraryManager libraryManager, IUserManager userManager, ILogger logger)
+ public ArtistsValidator(ILibraryManager libraryManager, IUserManager userManager, ILogger logger)
{
_libraryManager = libraryManager;
_userManager = userManager;
@@ -65,7 +65,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
var innerProgress = new ActionableProgress<double>();
innerProgress.RegisterAction(pct => progress.Report(pct * .8));
-
+
var allArtists = await GetAllArtists(allSongs, cancellationToken, innerProgress).ConfigureAwait(false);
progress.Report(80);
@@ -79,7 +79,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
foreach (var artist in allArtists)
{
cancellationToken.ThrowIfCancellationRequested();
-
+
artist.ValidateImages();
artist.ValidateBackdrops();
@@ -230,8 +230,9 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
try
{
- var artistItem = await _libraryManager.GetArtist(currentArtist, cancellationToken, true, true)
- .ConfigureAwait(false);
+ var artistItem = _libraryManager.GetArtist(currentArtist);
+
+ await artistItem.RefreshMetadata(cancellationToken).ConfigureAwait(false);
returnArtists.Add(artistItem);
}
diff --git a/MediaBrowser.Server.Implementations/Library/Validators/GameGenresValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/GameGenresValidator.cs
index eba7193e0..eb89210ff 100644
--- a/MediaBrowser.Server.Implementations/Library/Validators/GameGenresValidator.cs
+++ b/MediaBrowser.Server.Implementations/Library/Validators/GameGenresValidator.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// <summary>
/// The _library manager
/// </summary>
- private readonly LibraryManager _libraryManager;
+ private readonly ILibraryManager _libraryManager;
/// <summary>
/// The _user manager
@@ -26,7 +26,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// </summary>
private readonly ILogger _logger;
- public GameGenresValidator(LibraryManager libraryManager, IUserManager userManager, ILogger logger)
+ public GameGenresValidator(ILibraryManager libraryManager, IUserManager userManager, ILogger logger)
{
_libraryManager = libraryManager;
_userManager = userManager;
@@ -47,8 +47,6 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
.Select(i => new Tuple<Guid, List<Game>>(i.Id, i.RootFolder.GetRecursiveChildren(i).OfType<Game>().ToList()))
.ToList();
- var allLibraryItems = allItems;
-
var masterDictionary = new Dictionary<string, Dictionary<Guid, Dictionary<CountType, int>>>(StringComparer.OrdinalIgnoreCase);
// Populate counts of items
@@ -99,7 +97,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
private async Task UpdateItemByNameCounts(string name, CancellationToken cancellationToken, Dictionary<Guid, Dictionary<CountType, int>> counts)
{
- var itemByName = await _libraryManager.GetGameGenre(name, cancellationToken, true, true).ConfigureAwait(false);
+ var itemByName = _libraryManager.GetGameGenre(name);
foreach (var libraryId in counts.Keys)
{
@@ -107,6 +105,8 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
itemByName.UserItemCounts[libraryId] = itemCounts;
}
+
+ await itemByName.RefreshMetadata(cancellationToken).ConfigureAwait(false);
}
private void SetItemCounts(Guid userId, IEnumerable<BaseItem> allItems, Dictionary<string, Dictionary<Guid, Dictionary<CountType, int>>> masterDictionary)
diff --git a/MediaBrowser.Server.Implementations/Library/Validators/GenresValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/GenresValidator.cs
index c605961f7..9a34dd1b0 100644
--- a/MediaBrowser.Server.Implementations/Library/Validators/GenresValidator.cs
+++ b/MediaBrowser.Server.Implementations/Library/Validators/GenresValidator.cs
@@ -15,7 +15,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// <summary>
/// The _library manager
/// </summary>
- private readonly LibraryManager _libraryManager;
+ private readonly ILibraryManager _libraryManager;
/// <summary>
/// The _user manager
@@ -27,7 +27,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// </summary>
private readonly ILogger _logger;
- public GenresValidator(LibraryManager libraryManager, IUserManager userManager, ILogger logger)
+ public GenresValidator(ILibraryManager libraryManager, IUserManager userManager, ILogger logger)
{
_libraryManager = libraryManager;
_userManager = userManager;
@@ -102,7 +102,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
private async Task UpdateItemByNameCounts(string name, CancellationToken cancellationToken, Dictionary<Guid, Dictionary<CountType, int>> counts)
{
- var itemByName = await _libraryManager.GetGenre(name, cancellationToken, true, true).ConfigureAwait(false);
+ var itemByName = _libraryManager.GetGenre(name);
foreach (var libraryId in counts.Keys)
{
@@ -110,6 +110,8 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
itemByName.UserItemCounts[libraryId] = itemCounts;
}
+
+ await itemByName.RefreshMetadata(cancellationToken).ConfigureAwait(false);
}
private void SetItemCounts(Guid userId, IEnumerable<BaseItem> allItems, Dictionary<string, Dictionary<Guid, Dictionary<CountType, int>>> masterDictionary)
diff --git a/MediaBrowser.Server.Implementations/Library/Validators/MusicGenresValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/MusicGenresValidator.cs
index 9063027ec..1b211d5f4 100644
--- a/MediaBrowser.Server.Implementations/Library/Validators/MusicGenresValidator.cs
+++ b/MediaBrowser.Server.Implementations/Library/Validators/MusicGenresValidator.cs
@@ -15,7 +15,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// <summary>
/// The _library manager
/// </summary>
- private readonly LibraryManager _libraryManager;
+ private readonly ILibraryManager _libraryManager;
/// <summary>
/// The _user manager
@@ -27,7 +27,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// </summary>
private readonly ILogger _logger;
- public MusicGenresValidator(LibraryManager libraryManager, IUserManager userManager, ILogger logger)
+ public MusicGenresValidator(ILibraryManager libraryManager, IUserManager userManager, ILogger logger)
{
_libraryManager = libraryManager;
_userManager = userManager;
@@ -102,7 +102,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
private async Task UpdateItemByNameCounts(string name, CancellationToken cancellationToken, Dictionary<Guid, Dictionary<CountType, int>> counts)
{
- var itemByName = await _libraryManager.GetMusicGenre(name, cancellationToken, true, true).ConfigureAwait(false);
+ var itemByName = _libraryManager.GetMusicGenre(name);
foreach (var libraryId in counts.Keys)
{
@@ -110,6 +110,8 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
itemByName.UserItemCounts[libraryId] = itemCounts;
}
+
+ await itemByName.RefreshMetadata(cancellationToken).ConfigureAwait(false);
}
private void SetItemCounts(Guid userId, IEnumerable<BaseItem> allItems, Dictionary<string, Dictionary<Guid, Dictionary<CountType, int>>> masterDictionary)
diff --git a/MediaBrowser.Server.Implementations/Library/Validators/PeoplePostScanTask.cs b/MediaBrowser.Server.Implementations/Library/Validators/PeoplePostScanTask.cs
index 708f8bfa4..3c1528d01 100644
--- a/MediaBrowser.Server.Implementations/Library/Validators/PeoplePostScanTask.cs
+++ b/MediaBrowser.Server.Implementations/Library/Validators/PeoplePostScanTask.cs
@@ -41,11 +41,10 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// <returns>Task.</returns>
public Task Run(IProgress<double> progress, CancellationToken cancellationToken)
{
- return RunInternal(progress, cancellationToken);
- //return Task.Run(() => RunInternal(progress, cancellationToken));
+ return Task.Run(() => RunInternal(progress, cancellationToken));
}
- private async Task RunInternal(IProgress<double> progress, CancellationToken cancellationToken)
+ private void RunInternal(IProgress<double> progress, CancellationToken cancellationToken)
{
var allItems = _libraryManager.RootFolder.RecursiveChildren.ToList();
@@ -91,7 +90,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
{
var counts = masterDictionary[name];
- var itemByName = await _libraryManager.GetPerson(name).ConfigureAwait(false);
+ var itemByName = _libraryManager.GetPerson(name);
foreach (var libraryId in counts.Keys)
{
diff --git a/MediaBrowser.Server.Implementations/Library/Validators/StudiosValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/StudiosValidator.cs
index 202cd9414..a4d880329 100644
--- a/MediaBrowser.Server.Implementations/Library/Validators/StudiosValidator.cs
+++ b/MediaBrowser.Server.Implementations/Library/Validators/StudiosValidator.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// <summary>
/// The _library manager
/// </summary>
- private readonly LibraryManager _libraryManager;
+ private readonly ILibraryManager _libraryManager;
/// <summary>
/// The _user manager
@@ -26,7 +26,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// </summary>
private readonly ILogger _logger;
- public StudiosValidator(LibraryManager libraryManager, IUserManager userManager, ILogger logger)
+ public StudiosValidator(ILibraryManager libraryManager, IUserManager userManager, ILogger logger)
{
_libraryManager = libraryManager;
_userManager = userManager;
@@ -99,7 +99,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
private async Task UpdateItemByNameCounts(string name, CancellationToken cancellationToken, Dictionary<Guid, Dictionary<CountType, int>> counts)
{
- var itemByName = await _libraryManager.GetStudio(name, cancellationToken, true, true).ConfigureAwait(false);
+ var itemByName = _libraryManager.GetStudio(name);
foreach (var libraryId in counts.Keys)
{
@@ -107,6 +107,8 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
itemByName.UserItemCounts[libraryId] = itemCounts;
}
+
+ await itemByName.RefreshMetadata(cancellationToken).ConfigureAwait(false);
}
private void SetItemCounts(Guid userId, IEnumerable<BaseItem> allItems, Dictionary<string, Dictionary<Guid, Dictionary<CountType, int>>> masterDictionary)