Project

Profile

Help

Issue #5448

Updated by dalley over 4 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.

Back