diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 4cdc4657e3..04d42e16f3 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -702,7 +702,7 @@ namespace MediaBrowser.Controller.Entities /// /// The path. /// true if the specified path is offline; otherwise, false. - private bool IsPathOffline(string path) + public static bool IsPathOffline(string path) { if (FileSystem.FileExists(path)) { @@ -736,12 +736,12 @@ namespace MediaBrowser.Controller.Entities /// The folders. /// The path. /// true if the specified folders contains path; otherwise, false. - private bool ContainsPath(IEnumerable folders, string path) + private static bool ContainsPath(IEnumerable folders, string path) { return folders.SelectMany(i => i.Locations).Any(i => ContainsPath(i, path)); } - private bool ContainsPath(string parent, string path) + private static bool ContainsPath(string parent, string path) { return string.Equals(parent, path, StringComparison.OrdinalIgnoreCase) || FileSystem.ContainsSubPath(parent, path); } diff --git a/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs b/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs index c9f7165cb5..709ed5ec9a 100644 --- a/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs +++ b/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs @@ -184,15 +184,24 @@ namespace MediaBrowser.Server.Implementations.Persistence try { - if (!_fileSystem.FileExists(path) && !_fileSystem.DirectoryExists(path)) + if (_fileSystem.FileExists(path) || _fileSystem.DirectoryExists(path)) { - var libraryItem = _libraryManager.GetItemById(item.Item1); - - await _libraryManager.DeleteItem(libraryItem, new DeleteOptions - { - DeleteFileLocation = false - }); + continue; } + + var libraryItem = _libraryManager.GetItemById(item.Item1); + + if (Folder.IsPathOffline(path)) + { + libraryItem.IsOffline = true; + await libraryItem.UpdateToRepository(ItemUpdateType.None, cancellationToken).ConfigureAwait(false); + continue; + } + + await _libraryManager.DeleteItem(libraryItem, new DeleteOptions + { + DeleteFileLocation = false + }); } catch (OperationCanceledException) {