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
{
var freeSpace = _diskProvider.GetAvailableSpace(path).Value;
var totalSpace = _diskProvider.GetTotalSize(path).Value;
var freeSpace = _diskProvider.GetAvailableSpace(path);
var totalSpace = _diskProvider.GetTotalSize(path);
if (!freeSpace.HasValue || !totalSpace.HasValue)
{
continue;
}
diskSpace = new DiskSpace
{
Path = path,
FreeSpace = freeSpace,
TotalSpace = totalSpace
FreeSpace = freeSpace.Value,
TotalSpace = totalSpace.Value
};
diskSpace.Label = _diskProvider.GetVolumeLabel(path);

View File

@ -24,7 +24,15 @@ namespace NzbDrone.Mono
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)
{
@ -132,7 +140,7 @@ namespace NzbDrone.Mono
drives.Where(drive =>
drive.IsReady && path.StartsWith(drive.Name, StringComparison.CurrentCultureIgnoreCase))
.OrderByDescending(drive => drive.Name.Length)
.First();
.FirstOrDefault();
}
}
}