From a47546a1f14a7697db82d4040ddf355274125f38 Mon Sep 17 00:00:00 2001 From: Simon Frei Date: Tue, 16 Jun 2020 09:25:41 +0200 Subject: [PATCH] lib/scanner, lib/model: Improve error handling when scanning (#6736) --- lib/model/folder.go | 7 ++++++- lib/scanner/walk.go | 1 - 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/model/folder.go b/lib/model/folder.go index 8f1692542..c6aab7db9 100644 --- a/lib/model/folder.go +++ b/lib/model/folder.go @@ -394,8 +394,12 @@ func (f *folder) scanSubdirs(subDirs []string) error { f.setState(FolderScanning) + // If we return early e.g. due to a folder health error, the scan needs + // to be cancelled. + scanCtx, scanCancel := context.WithCancel(f.ctx) + defer scanCancel() mtimefs := f.fset.MtimeFS() - fchan := scanner.Walk(f.ctx, scanner.Config{ + fchan := scanner.Walk(scanCtx, scanner.Config{ Folder: f.ID, Subs: subDirs, Matcher: f.ignores, @@ -885,6 +889,7 @@ func (f *folder) String() string { func (f *folder) newScanError(path string, err error) { f.scanErrorsMut.Lock() + l.Infof("Scanner (folder %s, item %q): %v", f.Description(), path, err) f.scanErrors = append(f.scanErrors, FileError{ Err: err.Error(), Path: path, diff --git a/lib/scanner/walk.go b/lib/scanner/walk.go index 39114ac4f..e180c8e5a 100644 --- a/lib/scanner/walk.go +++ b/lib/scanner/walk.go @@ -531,7 +531,6 @@ func (w *walker) handleError(ctx context.Context, context, path string, err erro if fs.IsNotExist(err) { return } - l.Infof("Scanner (folder %s, item %q): %s: %v", w.Folder, path, context, err) select { case finishedChan <- ScanResult{ Err: fmt.Errorf("%s: %w", context, err),