DiskSpaceService will not blow up if total or free space is null

This commit is contained in:
Mark McDowall 2014-02-26 08:08:04 -08:00
parent 99336595b0
commit 274e2eac86
2 changed files with 19 additions and 6 deletions

View File

@ -69,14 +69,19 @@ namespace NzbDrone.Core.DiskSpace
try try
{ {
var freeSpace = _diskProvider.GetAvailableSpace(path).Value; var freeSpace = _diskProvider.GetAvailableSpace(path);
var totalSpace = _diskProvider.GetTotalSize(path).Value; var totalSpace = _diskProvider.GetTotalSize(path);
if (!freeSpace.HasValue || !totalSpace.HasValue)
{
continue;
}
diskSpace = new DiskSpace diskSpace = new DiskSpace
{ {
Path = path, Path = path,
FreeSpace = freeSpace, FreeSpace = freeSpace.Value,
TotalSpace = totalSpace TotalSpace = totalSpace.Value
}; };
diskSpace.Label = _diskProvider.GetVolumeLabel(path); diskSpace.Label = _diskProvider.GetVolumeLabel(path);

View File

@ -24,7 +24,15 @@ namespace NzbDrone.Mono
try try
{ {
return GetDriveInfoLinux(path).AvailableFreeSpace; var driveInfo = GetDriveInfoLinux(path);
if (driveInfo == null)
{
Logger.Trace("Unable to get free space for '{0}', unable to find suitable drive", path);
return null;
}
return driveInfo.AvailableFreeSpace;
} }
catch (InvalidOperationException e) catch (InvalidOperationException e)
{ {
@ -132,7 +140,7 @@ namespace NzbDrone.Mono
drives.Where(drive => drives.Where(drive =>
drive.IsReady && path.StartsWith(drive.Name, StringComparison.CurrentCultureIgnoreCase)) drive.IsReady && path.StartsWith(drive.Name, StringComparison.CurrentCultureIgnoreCase))
.OrderByDescending(drive => drive.Name.Length) .OrderByDescending(drive => drive.Name.Length)
.First(); .FirstOrDefault();
} }
} }
} }