Skip to content

Conversation

anttimaki
Copy link
Collaborator

Draft PR todo:

  1. Define correct URL for configuration source
  2. Thunderstore API needs to allow list the new CDN domain for these changes to actually cause the files to be downloaded from the new source

While the changes as-is shouldn't break anything if released now, they won't actually do anything either before the aforementioned steps are completed.

Thunderstore is migrating to another CDN provider, and the change is to
be done as a gradual rollout. To avoid requiring a new release for each
rollout change, the mod manager will be changed to read the CDN
configuration from an online source.

The requirements of this task requires a more complicated data
structure than the simple array used previously. Firstly we want to
control the percentage of requests that are sent to old main CDN and
the new main CDN. Secondly we want to test the change with only package
downloads first, meaning other CDN dependant operations should only use
the old main and mirror CDNs. Thirdly when the mirror CDN is selected,
portion of the requests are not directed to the new CDN so users have a
way to opt out should problems arise.

It should be noted the implementation was kept as simple as it could
given the requirements above. Therefore it might make sense to revisit
the implementation once the rollout is complete, all operations can use
the new CDN, and the requirements may have changed.
This is used to gradually test the new CDN Thunderstore is migrating
to.
Ability to change CDN config without having to make a new mod manager
release comes in handy when Thunderstore gradually migrates from one
CDN provider to another.
Time it takes to make the connection check has increased as the CDN
configuration is first read from online. Since the first render of the
mod manager takes place after the IPC related things are executed, it
makes sense to execute the check only after them.
@anttimaki anttimaki requested a review from MythicManiac April 7, 2025 09:47
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