From a78693a2f7fee14316cdbe1308d219325e648811 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Sun, 12 Feb 2023 19:50:15 -0800 Subject: [PATCH] Fixed: Prevent getting disk space from returning no information when it partially fails (cherry picked from commit 2c65e4fa41418157d0d27b34c3bab80158cff219) --- src/NzbDrone.Mono/Disk/DiskProvider.cs | 34 ++++++++++++++++++++------ 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/src/NzbDrone.Mono/Disk/DiskProvider.cs b/src/NzbDrone.Mono/Disk/DiskProvider.cs index 0ddee8441..e8d25b3e8 100644 --- a/src/NzbDrone.Mono/Disk/DiskProvider.cs +++ b/src/NzbDrone.Mono/Disk/DiskProvider.cs @@ -168,14 +168,32 @@ public override void CopyPermissions(string sourcePath, string targetPath) protected override List GetAllMounts() { - return _procMountProvider.GetMounts() - .Concat(GetDriveInfoMounts() - .Select(d => new DriveInfoMount(d, FindDriveType.Find(d.DriveFormat))) - .Where(d => d.DriveType == DriveType.Fixed || - d.DriveType == DriveType.Network || - d.DriveType == DriveType.Removable)) - .DistinctBy(v => v.RootDirectory) - .ToList(); + var mounts = new List(); + + try + { + mounts.AddRange(_procMountProvider.GetMounts()); + } + catch (Exception e) + { + _logger.Warn(e, $"Unable to get mounts: {e.Message}"); + } + + try + { + mounts.AddRange(GetDriveInfoMounts() + .Select(d => new DriveInfoMount(d, FindDriveType.Find(d.DriveFormat))) + .Where(d => d.DriveType == DriveType.Fixed || + d.DriveType == DriveType.Network || + d.DriveType == DriveType.Removable)); + } + catch (Exception e) + { + _logger.Warn(e, $"Unable to get drive mounts: {e.Message}"); + } + + return mounts.DistinctBy(v => v.RootDirectory) + .ToList(); } protected override bool IsSpecialMount(IMount mount)