diff --git a/src/NzbDrone.Core/HealthCheck/Checks/ImportListRootFolderCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/ImportListRootFolderCheck.cs index cbf6ecfec..aed0a82e5 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/ImportListRootFolderCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/ImportListRootFolderCheck.cs @@ -1,15 +1,19 @@ 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.Music.Events; using NzbDrone.Core.RootFolders; +using NzbDrone.Core.ThingiProvider.Events; namespace NzbDrone.Core.HealthCheck.Checks { + [CheckOn(typeof(ProviderUpdatedEvent))] + [CheckOn(typeof(ProviderDeletedEvent))] [CheckOn(typeof(ModelEvent))] [CheckOn(typeof(ArtistsDeletedEvent))] [CheckOn(typeof(ArtistMovedEvent))] @@ -19,17 +23,21 @@ public class ImportListRootFolderCheck : HealthCheckBase { 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) @@ -43,7 +51,10 @@ public override HealthCheck Check() 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 }); }