From 907023ca1007a94c826047963bc1b0c8569cd802 Mon Sep 17 00:00:00 2001 From: Keivan Beigi Date: Mon, 13 Oct 2014 13:43:36 -0700 Subject: [PATCH] don't blow up if a single download is not trackable. --- .../Download/DownloadTrackingService.cs | 38 +++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/src/NzbDrone.Core/Download/DownloadTrackingService.cs b/src/NzbDrone.Core/Download/DownloadTrackingService.cs index 04e4b4c8e..ea3c0230f 100644 --- a/src/NzbDrone.Core/Download/DownloadTrackingService.cs +++ b/src/NzbDrone.Core/Download/DownloadTrackingService.cs @@ -33,7 +33,7 @@ namespace NzbDrone.Core.Download private readonly IEventAggregator _eventAggregator; private readonly IConfigService _configService; private readonly IFailedDownloadService _failedDownloadService; - private readonly ICompletedDownloadService _completedDownloadService; + private readonly ICompletedDownloadService _completedDownloadService; private readonly IParsingService _parsingService; private readonly Logger _logger; @@ -140,24 +140,32 @@ namespace NzbDrone.Core.Download var downloadClientHistory = downloadClient.GetItems().ToList(); foreach (var downloadItem in downloadClientHistory) { - var trackingId = String.Format("{0}-{1}", downloadClient.Definition.Id, downloadItem.DownloadClientId); - TrackedDownload trackedDownload; - - if (newTrackedDownloads.ContainsKey(trackingId)) continue; - - if (!oldTrackedDownloads.TryGetValue(trackingId, out trackedDownload)) + try { - trackedDownload = GetTrackedDownload(trackingId, downloadClient.Definition.Id, downloadItem, grabbedHistory); + var trackingId = String.Format("{0}-{1}", downloadClient.Definition.Id, downloadItem.DownloadClientId); + TrackedDownload trackedDownload; - if (trackedDownload == null) continue; + if (newTrackedDownloads.ContainsKey(trackingId)) continue; - _logger.Debug("[{0}] Started tracking download with id {1}.", downloadItem.Title, trackingId); - stateChanged = true; + if (!oldTrackedDownloads.TryGetValue(trackingId, out trackedDownload)) + { + trackedDownload = GetTrackedDownload(trackingId, downloadClient.Definition.Id, downloadItem, + grabbedHistory); + + if (trackedDownload == null) continue; + + _logger.Debug("[{0}] Started tracking download with id {1}.", downloadItem.Title, trackingId); + stateChanged = true; + } + + trackedDownload.DownloadItem = downloadItem; + + newTrackedDownloads[trackingId] = trackedDownload; + } + catch (Exception e) + { + _logger.ErrorException("An error occured while tracking download." + downloadItem.Title, e); } - - trackedDownload.DownloadItem = downloadItem; - - newTrackedDownloads[trackingId] = trackedDownload; } }