diff --git a/server_plex32.md b/server_plex32.md index 30b0938..ce60b03 100644 --- a/server_plex32.md +++ b/server_plex32.md @@ -412,6 +412,19 @@ The daily update check was intermittently reporting `Plex Media Server = Check f Resolved — manual `sudo` run completed cleanly after the fix, and the failure message no longer appears. +### **plex32_update_check.sh — Registry "Unauthorized" Retry Fix (2026-08-04)** +The daily update check intermittently failed with `error from registry: unauthorized` on the final step of the Plex image pull — every layer showed `Pull complete`/`Download complete`, then the pull failed right at the end. This occurred twice. + +**Root cause:** A known transient issue with `lscr.io` (LinuxServer's registry) on large multi-layer images — the manifest-verification token occasionally expires or gets rate-limited at the very last step of the pull, even though `lscr.io` does not require authentication for public pulls. Not a credentials problem; the script had no retry logic, so any single transient failure was reported as a full check failure. + +**Fix applied:** +- The `docker pull` step is now wrapped in a retry loop — up to 3 attempts, 30 seconds apart — before being treated as a genuine failure. +- Also discovered during this fix: the `export PATH=...` line from the 2026-07-12 fix (below) was missing from the deployed script despite being documented as applied. Re-added at the top of the script. +- If a retry succeeds, the email now notes `(succeeded on retry, attempt N)` next to the update-available status, so successful retries stay visible instead of looking identical to a clean first-attempt pull. +- Only a failure across all 3 attempts still produces the red `CHECK FAILED` error block with full `docker pull` output, as before. + +Resolved — verified with a live production run; the script now correctly reports "Update available" with ready-to-run commands instead of a registry error. + ### **plex32_health_report.sh — Issues List Word-Wrapping Fix (2026-07-12)** The "⚠ Issues Detected" block in the daily health report email was rendering each word of an issue message on its own line (e.g. "WARNING: NAS08 — Plex Config is getting full" appeared as one word per line) instead of as a single readable sentence. @@ -461,6 +474,7 @@ Resolved — verified with a manual run; each issue now renders as one complete - Plex on NAS08 is **permanently disabled** (restart: no in compose). - Migrated from NAS08 on 2026-06-18 — full library, watch history, and playlists preserved. - **`plex32_update_check.sh` fixed 2026-07-12** — added explicit `PATH` export to fix intermittent `docker pull` failures under root's cron environment; script now logs real `docker pull` error output on failure instead of a generic "could not reach registry" message. All three PLEX32 scheduled jobs run under root's crontab. +- **`plex32_update_check.sh` fixed again 2026-08-04** — added a 3-attempt retry loop (30s apart) around `docker pull` to handle `lscr.io`'s transient `error from registry: unauthorized` failure (all layers pull successfully, then the final manifest step fails — a known registry-side token/rate-limit issue, not a credentials problem). Also re-added the `PATH` export from the 2026-07-12 fix, which had gone missing from the deployed script. Only a failure across all 3 attempts is now reported as `CHECK FAILED`; a retry success is noted inline in the email instead of being silently indistinguishable from a clean pull. - **`plex32_health_report.sh` fixed 2026-07-12** — fixed the "Issues Detected" email block rendering each word on its own line, caused by a multi-character `IFS='. '` split; issues are now newline-delimited and read back with a `while read` loop. ---