User-initiated scan cancellation (ScanCanceled) was logged at ERROR across all four library-scan handlers (Jellyfin/Emby/Plex/local), creating false-alarm noise. Split each to LogInformation for ScanCanceled and keep LogError for genuine failures. All sites enumerated via grep; LastScan-stamping behavior unchanged. Tests added for local + Jellyfin.
Review: backend log-level leaf, no behavior change; orchestrator inline review (verified if/else with braces, all cancellation sites covered). Build + 7 tests green. 2 pre-existing BOMs stripped.
User-initiated scan cancellation (`ScanCanceled`) was logged at ERROR across all four library-scan handlers (Jellyfin/Emby/Plex/local), creating false-alarm noise. Split each to `LogInformation` for `ScanCanceled` and keep `LogError` for genuine failures. All sites enumerated via grep; `LastScan`-stamping behavior unchanged. Tests added for local + Jellyfin.
**Review:** backend log-level leaf, no behavior change; orchestrator inline review (verified if/else with braces, all cancellation sites covered). Build + 7 tests green. 2 pre-existing BOMs stripped.
fixes #410
Scan cancellation surfaces as ScanCanceled, an ordinary BaseError, so all
four scan handlers (Jellyfin/Emby/Plex/local) logged it at ERROR alongside
genuine failures. A user cancelling a scan (or a container restart mid-scan)
is not an error; this was training operators to ignore scanner ERROR lines,
corrosive precisely because #264 showed scanner failures can be silent.
Each handler's Left-result loop now branches on `error is ScanCanceled`:
logs Information ("Scan of {Name} was canceled") for cancellation, keeps
LogError for every other BaseError. No behavior change to LastScan
stamping (still correctly skipped on any Left, cancellation included).
fixes#410
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
User-initiated scan cancellation (
ScanCanceled) was logged at ERROR across all four library-scan handlers (Jellyfin/Emby/Plex/local), creating false-alarm noise. Split each toLogInformationforScanCanceledand keepLogErrorfor genuine failures. All sites enumerated via grep;LastScan-stamping behavior unchanged. Tests added for local + Jellyfin.Review: backend log-level leaf, no behavior change; orchestrator inline review (verified if/else with braces, all cancellation sites covered). Build + 7 tests green. 2 pre-existing BOMs stripped.
fixes #410
Review-verdict: MERGEABLE @
7d71fb9f94Backend log-level leaf, no behavior change. All four scan handlers' cancellation path → LogInformation (genuine failures stay LogError); orchestrator verified if/else-with-braces + full site enumeration. Build + 7 tests green.