From fc8b6014ecc0ea4f480e8b1fd68d738be86caffc Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Tue, 28 Apr 2020 21:37:26 -0700 Subject: [PATCH] Fixed: Imported downloads not being removed when seeding goals are met Fixes #3693 --- .../Download/DownloadProcessingService.cs | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/NzbDrone.Core/Download/DownloadProcessingService.cs b/src/NzbDrone.Core/Download/DownloadProcessingService.cs index 64890fdf0..1c06336fa 100644 --- a/src/NzbDrone.Core/Download/DownloadProcessingService.cs +++ b/src/NzbDrone.Core/Download/DownloadProcessingService.cs @@ -32,9 +32,13 @@ namespace NzbDrone.Core.Download _logger = logger; } - private void RemoveCompletedDownloads(List trackedDownloads) + private void RemoveCompletedDownloads() { - foreach (var trackedDownload in trackedDownloads.Where(c => c.DownloadItem.CanBeRemoved && c.State == TrackedDownloadState.Imported)) + var trackedDownloads = _trackedDownloadService.GetTrackedDownloads() + .Where(t => !t.DownloadItem.Removed && t.DownloadItem.CanBeRemoved && t.State == TrackedDownloadState.Imported) + .ToList(); + + foreach (var trackedDownload in trackedDownloads) { _eventAggregator.PublishEvent(new DownloadCompletedEvent(trackedDownload)); } @@ -55,20 +59,10 @@ namespace NzbDrone.Core.Download if (trackedDownload.State == TrackedDownloadState.DownloadFailedPending) { _failedDownloadService.ProcessFailed(trackedDownload); - continue; } else if (enableCompletedDownloadHandling && trackedDownload.State == TrackedDownloadState.ImportPending) { _completedDownloadService.Import(trackedDownload); - continue; - } - - if (removeCompletedDownloads && - trackedDownload.DownloadItem.Removed && - trackedDownload.DownloadItem.CanBeRemoved && - trackedDownload.State == TrackedDownloadState.Imported) - { - _eventAggregator.PublishEvent(new DownloadCanBeRemovedEvent(trackedDownload)); } } catch (Exception e) @@ -77,6 +71,12 @@ namespace NzbDrone.Core.Download } } + // Imported downloads are no longer trackable so process them after processing trackable downloads + if (removeCompletedDownloads) + { + RemoveCompletedDownloads(); + } + _eventAggregator.PublishEvent(new DownloadsProcessedEvent()); } }