Fixed: Edge case where import fails due to DB relationship mismatch

pull/1689/head
Qstick 4 years ago
parent f66a6eea6c
commit e8e4d76d73

@ -92,5 +92,18 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications
Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeFalse();
}
[Test]
public void should_be_accepted_if_file_cannot_be_fetched()
{
_localTrack.Tracks = Builder<Track>.CreateListOfSize(1)
.TheFirst(1)
.With(e => e.TrackFileId = 1)
.With(e => e.TrackFile = new LazyLoaded<TrackFile>((TrackFile)null))
.Build()
.ToList();
Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue();
}
}
}

@ -15,9 +15,9 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications
_logger = logger;
}
public Decision IsSatisfiedBy(LocalTrack item, DownloadClientItem downloadClientItem)
public Decision IsSatisfiedBy(LocalTrack localTrack, DownloadClientItem downloadClientItem)
{
var trackFiles = item.Tracks.Where(e => e.TrackFileId != 0).Select(e => e.TrackFile).ToList();
var trackFiles = localTrack.Tracks.Where(e => e.TrackFileId != 0).Select(e => e.TrackFile).ToList();
if (trackFiles.Count == 0)
{
@ -31,9 +31,19 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications
return Decision.Accept();
}
if (trackFiles.First().Value.Size == item.Size)
var trackFile = trackFiles.First().Value;
if (trackFile == null)
{
var track = localTrack.Tracks.First();
_logger.Trace("Unable to get track file details from the DB. TrackId: {0} TrackFileId: {1}", track.Id, track.TrackFileId);
return Decision.Accept();
}
if (trackFiles.First().Value.Size == localTrack.Size)
{
_logger.Debug("'{0}' Has the same filesize as existing file", item.Path);
_logger.Debug("'{0}' Has the same filesize as existing file", localTrack.Path);
return Decision.Reject("Has the same filesize as existing file");
}

Loading…
Cancel
Save