mirror of https://github.com/lidarr/Lidarr
Check history when retrying downloads with SAB
Fixed: Retrying a download shouldn't cause drone to lose track of it
This commit is contained in:
parent
fde38938b8
commit
acc25d7558
|
@ -1,17 +1,13 @@
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using FizzWare.NBuilder;
|
using FizzWare.NBuilder;
|
||||||
using FluentAssertions;
|
using FluentAssertions;
|
||||||
using Moq;
|
using Moq;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using NzbDrone.Common;
|
|
||||||
using NzbDrone.Core.Download;
|
using NzbDrone.Core.Download;
|
||||||
using NzbDrone.Core.Download.Clients.Sabnzbd;
|
using NzbDrone.Core.Download.Clients.Sabnzbd;
|
||||||
using NzbDrone.Core.Download.Clients.Sabnzbd.Responses;
|
using NzbDrone.Core.Download.Clients.Sabnzbd.Responses;
|
||||||
using NzbDrone.Core.Parser.Model;
|
|
||||||
using NzbDrone.Core.Test.Framework;
|
|
||||||
using NzbDrone.Core.Tv;
|
using NzbDrone.Core.Tv;
|
||||||
using NzbDrone.Test.Common;
|
using NzbDrone.Test.Common;
|
||||||
using NzbDrone.Core.RemotePathMappings;
|
using NzbDrone.Core.RemotePathMappings;
|
||||||
|
|
|
@ -208,27 +208,44 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
|
||||||
public override String RetryDownload(String id)
|
public override String RetryDownload(String id)
|
||||||
{
|
{
|
||||||
// Sabnzbd changed the nzo_id for retried downloads without reporting it back to us. We need to try to determine the new ID.
|
// Sabnzbd changed the nzo_id for retried downloads without reporting it back to us. We need to try to determine the new ID.
|
||||||
|
// Check both the queue and history because sometimes SAB keeps item in history to retry post processing (depends on failure reason)
|
||||||
|
|
||||||
var history = GetHistory().Where(v => v.DownloadClientId == id).ToList();
|
var currentHistory = GetHistory().ToList();
|
||||||
|
var currentHistoryItems = currentHistory.Where(v => v.DownloadClientId == id).ToList();
|
||||||
|
|
||||||
_proxy.RetryDownload(id, Settings);
|
if (currentHistoryItems.Count != 1)
|
||||||
|
|
||||||
if (history.Count() != 1)
|
|
||||||
{
|
{
|
||||||
_logger.Warn("History item missing. Couldn't get the new nzoid.");
|
_logger.Warn("History item missing. Couldn't get the new nzoid.");
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var currentHistoryItem = currentHistoryItems.First();
|
||||||
|
var otherItemsWithSameTitle = currentHistory.Where(h => h.Title == currentHistoryItem.Title &&
|
||||||
|
h.DownloadClientId != currentHistoryItem.DownloadClientId).ToList();
|
||||||
|
|
||||||
|
_proxy.RetryDownload(id, Settings);
|
||||||
|
|
||||||
for (int i = 0; i < 3; i++)
|
for (int i = 0; i < 3; i++)
|
||||||
{
|
{
|
||||||
var queue = GetQueue().Where(v => v.Category == history.First().Category && v.Title == history.First().Title).ToList();
|
var queue = GetQueue().Where(v => v.Category == currentHistoryItem.Category &&
|
||||||
|
v.Title == currentHistoryItem.Title).ToList();
|
||||||
|
|
||||||
if (queue.Count() == 1)
|
var history = GetHistory().Where(v => v.Category == currentHistoryItem.Category &&
|
||||||
|
v.Title == currentHistoryItem.Title &&
|
||||||
|
otherItemsWithSameTitle.Select(h => h.DownloadClientId)
|
||||||
|
.Contains(v.DownloadClientId)).ToList();
|
||||||
|
|
||||||
|
if (queue.Count == 1)
|
||||||
{
|
{
|
||||||
return queue.First().DownloadClientId;
|
return queue.First().DownloadClientId;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (queue.Count() > 2)
|
if (history.Count == 1)
|
||||||
|
{
|
||||||
|
return history.First().DownloadClientId;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (queue.Count > 1 || history.Count > 1)
|
||||||
{
|
{
|
||||||
_logger.Warn("Multiple items with the correct title. Couldn't get the new nzoid.");
|
_logger.Warn("Multiple items with the correct title. Couldn't get the new nzoid.");
|
||||||
return id;
|
return id;
|
||||||
|
|
Loading…
Reference in New Issue