diff --git a/API.Tests/Services/ParseScannedFilesTests.cs b/API.Tests/Services/ParseScannedFilesTests.cs index c286a9c25..26065f151 100644 --- a/API.Tests/Services/ParseScannedFilesTests.cs +++ b/API.Tests/Services/ParseScannedFilesTests.cs @@ -358,7 +358,8 @@ public class ParseScannedFilesTests : AbstractDbTest #endregion - [Fact] + // TODO: Add back in (removed for Hotfix v0.8.5.x) + //[Fact] public async Task HasSeriesFolderNotChangedSinceLastScan_AllSeriesFoldersHaveChanges() { const string testcase = "Subfolders always scanning all series changes - Manga.json"; @@ -452,7 +453,8 @@ public class ParseScannedFilesTests : AbstractDbTest Assert.Equal(1, changes); } - [Fact] + // TODO: Add back in (removed for Hotfix v0.8.5.x) + //[Fact] public async Task SubFoldersNoSubFolders_SkipAll() { const string testcase = "Subfolders and files at root - Manga.json"; diff --git a/API/Services/Tasks/Scanner/ParseScannedFiles.cs b/API/Services/Tasks/Scanner/ParseScannedFiles.cs index 08abb1c07..01cb4a4d0 100644 --- a/API/Services/Tasks/Scanner/ParseScannedFiles.cs +++ b/API/Services/Tasks/Scanner/ParseScannedFiles.cs @@ -209,17 +209,27 @@ public class ParseScannedFiles /// private bool HasSeriesFolderNotChangedSinceLastScan(Library library, IDictionary> seriesPaths, string directory, bool forceCheck) { - if (forceCheck) + // Reverting code from: https://github.com/Kareadita/Kavita/pull/3619/files#diff-0625df477047ab9d8e97a900201f2f29b2dc0599ba58eb75cfbbd073a9f3c72f + // This is to be able to release hotfix and tackle this in appropriate time + + // With the bottom-up approach, this can report a false positive where a nested folder will get scanned even though a parent is the series + // This can't really be avoided. This is more likely to happen on Image chapter folder library layouts. + if (forceCheck || !seriesPaths.TryGetValue(directory, out var seriesList)) { return false; } + // if (forceCheck) + // { + // return false; + // } + // TryGetSeriesList falls back to parent folders to match to seriesList - var seriesList = TryGetSeriesList(library, seriesPaths, directory); - if (seriesList == null) - { - return false; - } + // var seriesList = TryGetSeriesList(library, seriesPaths, directory); + // if (seriesList == null) + // { + // return false; + // } foreach (var series in seriesList) { @@ -299,7 +309,9 @@ public class ParseScannedFiles { return; } - result.Add(CreateScanResult(directory, folderPath, hasChanged, files)); + // Revert of https://github.com/Kareadita/Kavita/pull/3629/files#diff-0625df477047ab9d8e97a900201f2f29b2dc0599ba58eb75cfbbd073a9f3c72f + // for Hotfix v0.8.5.x + result.Add(CreateScanResult(directory, folderPath, true, files)); } /// @@ -758,11 +770,15 @@ public class ParseScannedFiles // If folder hasn't changed, generate fake ParserInfos if (!result.HasChanged) { - // We are certain TryGetSeriesList will return a valid result here, if the series wasn't present yet. It will have been changed. - result.ParserInfos = TryGetSeriesList(library, seriesPaths, normalizedFolder)! + result.ParserInfos = seriesPaths[normalizedFolder] .Select(fp => new ParserInfo { Series = fp.SeriesName, Format = fp.Format }) .ToList(); + // // We are certain TryGetSeriesList will return a valid result here, if the series wasn't present yet. It will have been changed. + // result.ParserInfos = TryGetSeriesList(library, seriesPaths, normalizedFolder)! + // .Select(fp => new ParserInfo { Series = fp.SeriesName, Format = fp.Format }) + // .ToList(); + _logger.LogDebug("[ScannerService] Skipped File Scan for {Folder} as it hasn't changed", normalizedFolder); await _eventHub.SendMessageAsync(MessageFactory.NotificationProgress, MessageFactory.FileScanProgressEvent($"Skipped {normalizedFolder}", library.Name, ProgressEventType.Updated));