From 231128e01c31e0de67e3d0ee0a70b95b37695b96 Mon Sep 17 00:00:00 2001 From: Taloth Saldono Date: Sat, 7 Jun 2014 22:18:45 +0200 Subject: [PATCH] Changed code to avoid duplicates making their way into the TrackedDownload cache. --- src/NzbDrone.Core/Download/DownloadTrackingService.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/NzbDrone.Core/Download/DownloadTrackingService.cs b/src/NzbDrone.Core/Download/DownloadTrackingService.cs index 78bb5ec5f..463c06d97 100644 --- a/src/NzbDrone.Core/Download/DownloadTrackingService.cs +++ b/src/NzbDrone.Core/Download/DownloadTrackingService.cs @@ -105,7 +105,7 @@ namespace NzbDrone.Core.Download var downloadClients = _downloadClientProvider.GetDownloadClients(); var oldTrackedDownloads = GetTrackedDownloads().ToDictionary(v => v.TrackingId); - var newTrackedDownloads = new List(); + var newTrackedDownloads = new Dictionary(); var stateChanged = false; @@ -117,6 +117,8 @@ namespace NzbDrone.Core.Download var trackingId = String.Format("{0}-{1}", downloadClient.Definition.Id, downloadItem.DownloadClientId); TrackedDownload trackedDownload; + if (newTrackedDownloads.ContainsKey(trackingId)) continue; + if (!oldTrackedDownloads.TryGetValue(trackingId, out trackedDownload)) { trackedDownload = new TrackedDownload @@ -133,11 +135,11 @@ namespace NzbDrone.Core.Download trackedDownload.DownloadItem = downloadItem; - newTrackedDownloads.Add(trackedDownload); + newTrackedDownloads[trackingId] = trackedDownload; } } - foreach (var downloadItem in oldTrackedDownloads.Values.Except(newTrackedDownloads)) + foreach (var downloadItem in oldTrackedDownloads.Values.Where(v => !newTrackedDownloads.ContainsKey(v.TrackingId))) { if (downloadItem.State != TrackedDownloadState.Removed) { @@ -150,7 +152,7 @@ namespace NzbDrone.Core.Download _logger.Trace("Stopped tracking download: {0}: {1}", downloadItem.TrackingId, downloadItem.DownloadItem.Title); } - _trackedDownloadCache.Set("tracked", newTrackedDownloads.ToArray()); + _trackedDownloadCache.Set("tracked", newTrackedDownloads.Values.ToArray()); return stateChanged; }