Add arr_corruption_scan.sh — sequential ffprobe-based corruption scan for Sonarr

Healarr does the same job but crashes on a Go concurrency bug (unsynchronized
map access) whenever multiple corruption events land close together — confirmed
via its own crash log, not fixable from our side. Processing one file at a time
here sidesteps the whole bug class instead of trying to work around it.

Delete + explicit EpisodeSearch rather than relying on Sonarr's own background
missing-search cycle, since that skips unmonitored episodes and this shouldn't.
This commit is contained in:
Gmer4Lfe
2026-07-18 16:48:32 -04:00
parent d5d1403ebf
commit ab35fcd84d
3 changed files with 402 additions and 0 deletions
+11
View File
@@ -457,6 +457,17 @@
# ["/movies"]="/mnt/user/Movies"
)
# ━━━ Corruption Scan ━━━
# Container that has a working ffprobe binary AND mounts the same shares as the arrs'
# roots — check `docker inspect <container>` for its mounts before filling this in.
HOSTN_FFPROBE_CONTAINER=""
HOSTN_FFPROBE_BIN=""
declare -A HOSTN_FFPROBE_PATH_MAP=(
# ["/mnt/user/Tv_Shows"]="/ext-tv-shows"
# ["/mnt/user/Movies"]="/ext-movies"
)
# ━━━ Arr Recovery Toggles ━━━
HOSTN_LIDARR_RECOVERY=false
HOSTN_SONARR_RECOVERY=true
+1
View File
@@ -1184,6 +1184,7 @@
# reach "completed" — generous because a large series can sit
# queued behind other moves already in progress, not just its
# own copy time
CORRUPTION_SCAN_STATE_FILE="${DATA_DIR}/corruption_scan_state.tsv" # clean-file skip-cache
SONARR_EXTENSIONS=("mkv" "mp4" "avi" "m4v" "ts" "wmv" "mov")
SONARR_PROTECTED_PATTERNS=(
# Subtitles