Skip to content

Sync failures due to NEVRA duplicates should also report the conflicting packages #7184

@simenon

Description

@simenon

Is your feature request related to a problem? Please describe.
I am trying to setup an on-demand sync with rpm repo of rpm.grafana.com, but i hit a NEVRA issue.

Output of the sync task mentions this

"error": {
    "traceback": "  File \"/usr/local/lib/python3.11/site-packages/pulpcore/tasking/tasks.py\", line 72, in _execute_task\n    result = task_function()\n             ^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/site-packages/pulp_rpm/app/tasks/synchronizing.py\", line 569, in synchronize\n    repo_version = dv.create() or repo.latest_version()\n                   ^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/site-packages/pulpcore/plugin/stages/declarative_version.py\", line 157, in create\n    with self.repository.new_version() as new_version:\n  File \"/usr/local/lib/python3.11/site-packages/pulpcore/app/models/repository.py\", line 1354, in __exit__\n    repository.finalize_new_version(self)\n  File \"/usr/local/lib/python3.11/site-packages/pulp_rpm/app/models/repository.py\", line 426, in finalize_new_version\n    validate_duplicate_content(new_version)\n  File \"/usr/local/lib/python3.11/site-packages/pulpcore/plugin/repo_version_utils.py\", line 107, in validate_duplicate_content\n    raise ValueError(\n",
    "description": "Cannot create repository version. More than one rpm.package content with the duplicate values for name, epoch, version, release, arch, location_href."
  },

Unfortunate the task does not mention which packages are causing this conflict.

Describe the solution you'd like
The task status report (or somewhere else in the pulp logging) should show the duplicate values causing the error. This would help the user to identify the packaging causing the issue, and maybe resolve it.

Describe alternatives you've considered
Now i used a python script to download all the metadata to analyze this issue, which listed me the following conflicts

name,epoch,version,release,arch,location_hrefs
grafana,0,10.0.10,1,aarch64,"['Packages/grafana-10.0.10-1.aarch64.rpm', 'Packages/grafana-10.0.10-1.armhfp.rpm']"
grafana,0,v10.0.4,1,armhf,"['Packages/grafana-10.0.4-1.arm.rpm', 'Packages/grafana-10.0.4-1.armhfp.rpm']"
grafana,0,10.1.0,1,armhf,"['Packages/grafana-10.1.0-1.arm.rpm', 'Packages/grafana-10.1.0-1.armhfp.rpm']"
grafana,0,10.1.6,1,aarch64,"['Packages/grafana-10.1.6-1.aarch64.rpm', 'Packages/grafana-10.1.6-1.armhfp.rpm']"
grafana-enterprise,0,10.1.6,1,aarch64,"['Packages/grafana-enterprise-10.0.10-1.armhfp.rpm', 'Packages/grafana-enterprise-10.1.6-1.aarch64.rpm', 'Packages/grafana-enterprise-10.1.6-1.armhfp.rpm']"
grafana-enterprise,0,v10.0.4,1,armhf,"['Packages/grafana-enterprise-10.0.4-1.arm.rpm', 'Packages/grafana-enterprise-10.0.4-1.armhfp.rpm']"
grafana-enterprise,0,10.1.0,1,aarch64,"['Package/grafana-enterprise-10.1.0-1.aarch64.rpm', 'Packages/grafana-enterprise-10.1.0-1.aarch64.rpm']"
grafana-enterprise,0,10.1.0,1,armhf,"['Package/grafana-enterprise-10.1.0-1.arm.rpm', 'Package/grafana-enterprise-10.1.0-1.armhfp.rpm', 'Packages/grafana-enterprise-10.1.0-1.arm.rpm', 'Packages/grafana-enterprise-10.1.0-1.armhfp.rpm']"
grafana-enterprise,0,10.1.0,1,x86_64,"['Package/grafana-enterprise-10.1.0-1.x86_64.rpm', 'Packages/grafana-enterprise-10.1.0-1.x86_64.rpm']"

Additional context
Preferably i would also have an exclusion filter on the sync for these conflicting packages, but there is already an bug report for this at pulp/pulp_rpm#3469

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions