From 38c5989695e603c05ca9e071731961dd49db9b27 Mon Sep 17 00:00:00 2001 From: ta264 Date: Sun, 24 May 2020 22:44:44 +0100 Subject: [PATCH] Only query 5 movies ahead --- .../Movies/RefreshMovieService.cs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/NzbDrone.Core/Movies/RefreshMovieService.cs b/src/NzbDrone.Core/Movies/RefreshMovieService.cs index 07861a4c6..5c636fca8 100644 --- a/src/NzbDrone.Core/Movies/RefreshMovieService.cs +++ b/src/NzbDrone.Core/Movies/RefreshMovieService.cs @@ -206,11 +206,10 @@ namespace NzbDrone.Core.Movies .Where(movie => (updatedTMDBMovies.Count == 0 && _checkIfMovieShouldBeRefreshed.ShouldRefresh(movie)) || updatedTMDBMovies.Contains(movie.TmdbId) || message.Trigger == CommandTrigger.Manual) - .ToDictionary(x => _movieInfo.GetMovieInfoAsync(x.TmdbId), x => x); + .ToList(); - var tasks = toRefresh.Keys.ToList(); - - var skipped = allMovie.Except(toRefresh.Values); + var tasks = toRefresh.Take(5).Select(x => _movieInfo.GetMovieInfoAsync(x.TmdbId)).ToList(); + var skipped = allMovie.Except(toRefresh); foreach (var movie in skipped) { @@ -218,16 +217,18 @@ namespace NzbDrone.Core.Movies RescanMovie(movie, false, trigger); } - while (tasks.Count > 0) + for (var i = 0; i < toRefresh.Count; i++) { - var finishedTask = Task.WhenAny(tasks).GetAwaiter().GetResult(); - tasks.Remove(finishedTask); + var movie = toRefresh[i]; - var movie = toRefresh[finishedTask]; + if (i + 5 < toRefresh.Count) + { + tasks.Add(_movieInfo.GetMovieInfoAsync(toRefresh[i + 5].TmdbId)); + } try { - RefreshMovieInfo(movie, finishedTask); + RefreshMovieInfo(movie, tasks[i]); } catch (MovieNotFoundException) {