Skip to content

fix: register shared provider-cache reload observer once - #3288

Open
SonAndE14 wants to merge 1 commit into
recloudstream:masterfrom
SonAndE14:fix/provider-cache-observer-lifetime
Open

SonAndE14 wants to merge 1 commit into
recloudstream:masterfrom
SonAndE14:fix/provider-cache-observer-lifetime

Conversation

@SonAndE14

Copy link
Copy Markdown

Every APIRepository instance registers a bound plugin-reload listener, but those short-lived repositories never unregister. Opening more pages or searching more providers therefore retains repository/provider instances and makes future reload events iterate over an increasing number of identical shared-cache invalidations.

Register one listener when the companion object's shared response cache is initialized. Preserve the existing behavior: a forced plugin reload clears the cache; an ordinary plugin-loaded event leaves it intact. This does not change provider APIs, cache TTLs or network requests.

Regression validation:

  • Added a test that constructs 200 repositories and checks that observer count remains constant. It fails on current upstream, where each construction adds an observer.
  • Added a fake-provider test that verifies cached responses are shared across repository instances, survive a non-forced event and are loaded again after a forced event. It passes before and after the change.
  • After the fix: all 10 JVM tests passed (8 existing and 2 new). :app:assemblePrereleaseDebug, :app:lintPrereleaseDebug and :library:checkKotlinAbi passed.

AI disclosure: implementation, code review and automated test execution used OpenAI Codex assistance, in accordance with AI-POLICY.md. This contribution is kept separate from the fork's other changes so it can be reviewed independently.

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.

2 participants