diff options
| -rw-r--r-- | player-server/internal/scanner/scanner.go | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/player-server/internal/scanner/scanner.go b/player-server/internal/scanner/scanner.go index 9eb5b1e..9233630 100644 --- a/player-server/internal/scanner/scanner.go +++ b/player-server/internal/scanner/scanner.go @@ -498,7 +498,11 @@ func (s *FSScanner) probeWorkerLoop( if scanCtx.Err() != nil { continue } - result, err := s.probeFile(ctx, path, setPath, setID, setName, existing, coverImages, progress) + // Use scanCtx (not ctx) so ffprobe/ffmpeg subprocesses spawned by + // probeFile cancel promptly when scanCtx is cancelled — e.g. another + // worker failed or TriggerRescan restarted the scan. Passing the + // parent ctx here would leave ffprobe running after cancel. + result, err := s.probeFile(scanCtx, path, setPath, setID, setName, existing, coverImages, progress) if err != nil { sendErr(err) return |
