Repository navigation
Tags
Tags
fix(scanner): confirm orphan candidates against the servers before de… …clining The arr scanners snapshot the library once per run and then decline any PROCESSING request missing from the snapshot, so a request created mid-scan gets declined minutes after the *arr accepted it. The stock schedule makes it routine, as both scan jobs land on a plex-wtachlist-sync tick as well. Now they are re-checked against the live servers before anything is declined, using the library-filtered endpoints.
fix(sqlite): avoid shared transaction depth race in subscribers sqlite reuses one query runner per process, so concurrent scanner saves race on its shared transaction depth counter and wedge it, silently leaving later writes uncommitted. Related-request work now runs directly on event.manager on sqlite instead of nesting a transaction.
perf: bound tmdb cache & split scan lookups into their own tier Library scans and availavilit sync fetched the full /tv/:id payload including aggregate_credits and cached it for 12 hours in the same unbounded cache the interactive TV detail page uses, so a full scan left most of a library resident until the TTL expired. Scanners and availability sync now request only keywords and external_ids, which is everything they read, and write to a separate LRU-bounded cache with a 15 minute TTL, so scan lookups age out on their own instead of evicting traffic of manual browsing. The interactive cache gains a key-count backstop against the unbounded growth, and aggregate_credits.crew and credits.cast are stripped before caching since nothing in the codebase readss that either. fix seerr-team#3307
fix(tv): prevent phantom specials from blocking season requests
fix(proxy): proxy clients built before proxy init Proxying for axios relied on the per-instance httpAgent/httpsAgent, which axios.create() snapshots from axios.defaults at construction time. API clients constructed at import (such as BaseScanner.tmdb, avalabilitySync.tmdb) are built before createCustomProxyAgent runs, so they snapshotted no proxy agent and bypassed the proxy permanently, while clients created per-request afterwards were proxied. This fix resolves the agent per request from a live module-level holder via a stable interceptor that is registered on the default instance and every ExternalAPI client, so construction order no longer matters. forceIpv4First has been moved to the same path logic as well. fix seerr-team#3193
fix: availability sync demotion and orphan season rollup edge cases Availability sync no longer demotes shows based on a missing specials season, matching the scanner's existing rollup behavior. Also fixes a scanner rollup regression from seerr-team#3044 where a DB-only season with UNKNOWN status (an orphaned placeholder no longer in TMDB) could permanently pin a show at PARTIALLY_AVAILABLE. fix seerr-team#3129
PreviousNext