Project

Profile

Help

Issue #3605

Updated by daviddavis about 6 years ago

h2. An example # Problem 

 To use pulp_python as an example, I can create a content unit and specify the relative path for the artifact: 

 https://github.com/pulp/pulp_python/blob/2c6ab8b983877c1b4b7987bb55a8d829059a65b6/README.rst#create-python-content-from-an-artifact 

 Suppose I create a package with filename Y and relative_path Y. Then I create a package with filename X and relative_path Y (but different artifact). I can then add both to a repo version, publish it, and distribute it. Then I request artifact with relative_path Y. Which content unit's artifact gets served? 

 h2. # pulp_file 

 In pulp_file we solved this problem by making sure we use the latest content unit's artifact: 

 https://github.com/pulp/pulp_file/commit/a15d800d48dfaa0e06db1e05505a7d5e852649a8 

 h2. # Other solutions 

 The problem is that other plugin writers can make the same mistake. In fact, I believe this problem currently exists in pulp_python (although I haven't tested it).  

 Some solutions: 

 1. Add validation where content units are added to a repo version and have the same relative_path 
 2. Add validation to a publication when two published artifacts have the same path 
 3. Or just document this gotcha and warn plugin writers they need to deal with duplicate relative paths in repo versions/publications. 

Back