What's new
docker pull ghcr.io/new-usemame/calibre-web-nextgen:v4.0.74
(or :latest)
Ingest reliability improvements (backport of @navels' CWA #1349)
For users running large libraries with sustained ingest, or running on Docker Desktop / NFS / SMB / mergerfs / virtiofs where the watcher uses polling fallback:
- Stale watcher events no longer re-process the same file. Already-moved or already-deleted ingest paths fast-exit before any heavy startup work, so the polling fallback can't burn cycles re-emitting paths that have already been handled.
- Duplicate-scan + DB-reconnect work batches up at end of ingest. Previously these ran once per book — during a bulk ingest of 100 epubs that meant 100 redundant HTTP calls hitting the web process. Now they run exactly once when the ingest batch goes quiet. The web UI stays responsive throughout sustained ingests.
- Internal endpoint calls survive transient failures. Bounded retries on the cwa-internal POST endpoints (reconnect-db, invalidate-cache, queue-duplicate-scan) replace single-shot best-effort, so a momentary blip during an ingest batch doesn't lose the post-batch refresh.
This is complementary to the GIL+SQLite deadlock vector fix that shipped in v4.0.66 (the duplicate-scan UDF connect-listener) — that one eliminated the deadlock race fundamentally; this one adds defense-in-depth by deferring the work that could hit the race until the import batch is quiet.
Credits
Thanks @navels for the original PR (CWA #1349). Both original commits are preserved on the squash with Lee Nave <navels@gmail.com> authorship; the reconciliation against fork PRs #199 / #208 / #210 / #37 landed under new-usemame. Full per-file rationale in CHANGES-vs-upstream.md.