Skip to content

perf: share Dispatcharr catalogs across generation sources - #1162

Open
lpukatch wants to merge 2 commits into
devfrom
refactor/1161-channel-source-inputs
Open

lpukatch wants to merge 2 commits into
devfrom
refactor/1161-channel-source-inputs

Conversation

@lpukatch

Copy link
Copy Markdown
Collaborator

Channel-source groups repeatedly fetch the full Dispatcharr channel and EPGData catalogs before selecting their own streams. Share one successful catalog snapshot between candidate fetching and EPG resolution for each generation, and reuse the existing group-name lookup.

Group scoping, managed-output exclusions, active-guide checks, overlap filtering, and eligible-ID-only detail lookups still apply per source. A new generation clears the shared snapshot and name caches; failed catalog reads remain retryable.

Validation covers both cache-warming orders, candidate parity, scoped detail reads, empty catalogs, transient failures, and processor reuse. A synthetic comparison across 24 sources reduced channel-catalog and EPG-catalog reads from 24 each to 1 each, with identical complete candidate output; scoped detail reads remained at 24.

Architecture documentation and the bundled agent instructions describe the cache lifetime and exclusions.

Refs #1161. Bead: teamarr-23a3.

Validation:

  • ruff check teamarr/ tests/ passed.
  • pytest tests/ -v -n 4 passed: 4,860 tests on Python 3.11, using isolated temporary databases.
  • npm run build passed.
  • 40 targeted regressions passed with an initially empty default database path.
  • Full-generation smoke test completed successfully with the candidate loaded only in a benchmark process.

Catalog changes made during a generation are picked up by the next generation.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant