Issue #3605
closedPublications can contain published artifacts with duplicate paths
Description
An example¶
To use pulp_python as an example, I can create a content unit and specify the relative path for the 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?
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
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.
Updated by daviddavis over 6 years ago
- Subject changed from Repository versions can contain content units with non-unique relative paths to Publications can contain published artifacts with duplicate paths
Updated by jortel@redhat.com over 6 years ago
The repository is a generic collection of content and we should be cautious about putting constraints on it. I suggest we add a unique constraint in PublishedFile on (publication, relative_path).
Updated by daviddavis over 6 years ago
+1. Some plugin writer docs would be nice too.
Updated by dalley over 6 years ago
- Triaged changed from No to Yes
- Sprint set to Sprint 36
Updated by jortel@redhat.com over 6 years ago
- Status changed from NEW to ASSIGNED
- Assignee set to jortel@redhat.com
Added by jortel@redhat.com over 6 years ago
Added by jortel@redhat.com over 6 years ago
Revision 103272ed | View on GitHub
Add unique constraint to prevent duplicate relative paths in publications. closes #3605
Updated by jortel@redhat.com over 6 years ago
- Status changed from ASSIGNED to POST
Updated by jortel@redhat.com over 6 years ago
- Status changed from POST to MODIFIED
Applied in changeset pulp|103272ed9852a8e43392e47db9f5dcedf7364198.
Updated by bmbouter over 4 years ago
- Status changed from MODIFIED to CLOSED - CURRENTRELEASE
Add unique constraint to prevent duplicate relative paths in publications. closes #3605