Issue #5448
Updated by dalley about 5 years ago
When copying units using the "additional_repos" feature, if two source repos contain the same package, the package will be chosen nondeterministically from one of the two repos, and therefore the target repo that the dependency ends up in can be nondeterministic. Concrete example: <pre> Repo 1 contains "whale" and "walrus" RPMs Repo 2 contains "whale", "shark" and "stork" RPMs Dependencies: walrus └── whale ├── shark └── stork curl -k -u admin:admin --cert ~/.pulp/user-cert.pem -d '{"source_repo_id":"repo1","criteria":{"type_ids":["modulemd"],"filters":{}},"override_config":{"recursive_conservative":true,"additional_repos":{"repo2": "repo4"}}}' -H "Content-Type: application/json" -X POST https://localhost/pulp/api/v2/repositories/repo3/actions/associate/ </pre> After performing the above request, sometimes the "whale" RPM will be correctly copied from repo1 and correctly end up in repo3, and sometimes it will incorrectly be copied from repo2 and incorrectly end up in repo4 Libsolv has a "repo priority" feature that can be used to remedy this. The repos can assigned descending priority levels.