Fixed: Waiting a long time for unavailable root folders

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
This commit is contained in:
Mark McDowall 2019-08-16 20:54:03 -07:00 committed by Qstick
commit 74cb2a6f52
4 changed files with 56 additions and 22 deletions

View file

@ -7,7 +7,6 @@ using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.RootFolders;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Core.Music;

View file

@ -2,6 +2,8 @@ using System.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using NLog;
using NzbDrone.Common;
using NzbDrone.Common.Disk;
@ -67,11 +69,9 @@ namespace NzbDrone.Core.RootFolders
{
try
{
if (folder.Path.IsPathValid() && _diskProvider.FolderExists(folder.Path))
if (folder.Path.IsPathValid())
{
folder.FreeSpace = _diskProvider.GetAvailableSpace(folder.Path);
folder.TotalSpace = _diskProvider.GetTotalSize(folder.Path);
folder.UnmappedFolders = GetUnmappedFolders(folder.Path);
GetDetails(folder);
}
}
//We don't want an exception to prevent the root folders from loading in the UI, so they can still be deleted
@ -111,9 +111,8 @@ namespace NzbDrone.Core.RootFolders
_rootFolderRepository.Insert(rootFolder);
rootFolder.FreeSpace = _diskProvider.GetAvailableSpace(rootFolder.Path);
rootFolder.TotalSpace = _diskProvider.GetTotalSize(rootFolder.Path);
rootFolder.UnmappedFolders = GetUnmappedFolders(rootFolder.Path);
GetDetails(rootFolder);
return rootFolder;
}
@ -159,9 +158,8 @@ namespace NzbDrone.Core.RootFolders
public RootFolder Get(int id)
{
var rootFolder = _rootFolderRepository.Get(id);
rootFolder.FreeSpace = _diskProvider.GetAvailableSpace(rootFolder.Path);
rootFolder.TotalSpace = _diskProvider.GetTotalSize(rootFolder.Path);
rootFolder.UnmappedFolders = GetUnmappedFolders(rootFolder.Path);
GetDetails(rootFolder);
return rootFolder;
}
@ -179,5 +177,18 @@ namespace NzbDrone.Core.RootFolders
return possibleRootFolder.Path;
}
private void GetDetails(RootFolder rootFolder)
{
Task.Run(() =>
{
if (_diskProvider.FolderExists(rootFolder.Path))
{
rootFolder.FreeSpace = _diskProvider.GetAvailableSpace(rootFolder.Path);
rootFolder.TotalSpace = _diskProvider.GetTotalSize(rootFolder.Path);
rootFolder.UnmappedFolders = GetUnmappedFolders(rootFolder.Path);
}
})
.Wait(5000);
}
}
}