Fix skipping failed dependency downloads #4235
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
If you try to install a mod that has a dependency, and the dependency fails to download, and you try to Skip/Retry, CKAN will try to download it again. The only option that works is Abort whole changeset.
Cause
To get the mods from the changeset that depend on the mod we're trying to skip (since we also will not be able to install them), we call
Registry.FindReverseDependencies
, but we call the version of it that only returns identifiers that are already installed. This means the depending mod won't be returned and won't be removed from the changeset, so when the install is retried, the dependency is pulled back in.Changes
Now this codepath calls the static
Registry.FindReverseDependencies
that allows us to specify the overall superset of mods, which we pass as the full changeset. This allows the depending mod to be removed from the changeset so the Skip/Retry operation can succeed.Fixes #4234.