From 832de3e75e7041d25e8dd29ee35d0142adf6ee5a Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sat, 2 Nov 2024 22:01:10 +0200 Subject: [PATCH] Fixed: Root folder existence for import lists health check --- .../Checks/ImportListRootFolderCheck.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/NzbDrone.Core/HealthCheck/Checks/ImportListRootFolderCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/ImportListRootFolderCheck.cs index fc4ee7826..ea9ceffbc 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/ImportListRootFolderCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/ImportListRootFolderCheck.cs @@ -1,13 +1,20 @@ using System.Collections.Generic; using System.Linq; using NzbDrone.Common.Disk; +using NzbDrone.Common.Extensions; +using NzbDrone.Core.Datastore.Events; using NzbDrone.Core.ImportLists; using NzbDrone.Core.Localization; using NzbDrone.Core.MediaFiles.Events; +using NzbDrone.Core.RootFolders; +using NzbDrone.Core.ThingiProvider.Events; using NzbDrone.Core.Tv.Events; namespace NzbDrone.Core.HealthCheck.Checks { + [CheckOn(typeof(ProviderUpdatedEvent))] + [CheckOn(typeof(ProviderDeletedEvent))] + [CheckOn(typeof(ModelEvent))] [CheckOn(typeof(SeriesDeletedEvent))] [CheckOn(typeof(SeriesMovedEvent))] [CheckOn(typeof(EpisodeImportedEvent), CheckOnCondition.FailedOnly)] @@ -16,17 +23,21 @@ namespace NzbDrone.Core.HealthCheck.Checks { private readonly IImportListFactory _importListFactory; private readonly IDiskProvider _diskProvider; + private readonly IRootFolderService _rootFolderService; - public ImportListRootFolderCheck(IImportListFactory importListFactory, IDiskProvider diskProvider, ILocalizationService localizationService) + public ImportListRootFolderCheck(IImportListFactory importListFactory, IDiskProvider diskProvider, IRootFolderService rootFolderService, ILocalizationService localizationService) : base(localizationService) { _importListFactory = importListFactory; _diskProvider = diskProvider; + _rootFolderService = rootFolderService; } public override HealthCheck Check() { var importLists = _importListFactory.All(); + var rootFolders = _rootFolderService.All(); + var missingRootFolders = new Dictionary>(); foreach (var importList in importLists) @@ -40,7 +51,10 @@ namespace NzbDrone.Core.HealthCheck.Checks continue; } - if (!_diskProvider.FolderExists(rootFolderPath)) + if (rootFolderPath.IsNullOrWhiteSpace() || + !rootFolderPath.IsPathValid(PathValidationType.CurrentOs) || + !rootFolders.Any(r => r.Path.PathEquals(rootFolderPath)) || + !_diskProvider.FolderExists(rootFolderPath)) { missingRootFolders.Add(rootFolderPath, new List { importList }); }