pulp / pulpcore

Pulp 3 pulpcore package https://pypi.org/project/pulpcore/
GNU General Public License v2.0
301 stars 116 forks source link

The validate_duplicate_content function should provide more information in the failure case. #2062

Open fao89 opened 2 years ago

fao89 commented 2 years ago

Author: @quba42 (quba42)

Redmine Issue: 9574, https://pulp.plan.io/issues/9574


When the validate_duplicate_content function finds illegal duplicate content in a repo version being created, the output is (pulp_deb example):

"Cannot create repository version. More than one deb.package content with the duplicate values for package, version, architecture."

For users to have any chance of debugging this situation, it would be vital for the error to provide them with a list of the offending duplicate units, preferably the pulp_href, so they can go and look at them in detail.

Without this information I just know "I have duplicate units somewhere in the potentially tens of thousands of units in the repo version being created". (Since the repo version is then not created, I can't even go hunting for the duplicate units myself...) Right now, I can't even distinguish a situation where two packages are clashing, from one where all my packages are double (for example).

User reported backtrace for the error they encountered:

File \"/usr/lib/python3.6/site-packages/pulpcore/tasking/pulpcore_worker.py\", line 317, in _perform_task
  result = func(*args, **kwargs)
File \"/usr/lib/python3.6/site-packages/pulpcore/app/tasks/repository.py\", line 219, in add_and_remove
  new_version.add_content(models.Content.objects.filter(pk__in=add_content_units))
File \"/usr/lib/python3.6/site-packages/pulpcore/app/models/repository.py\", line 963, in __exit__
  repository.finalize_new_version(self)
File \"/usr/lib/python3.6/site-packages/pulp_deb/app/models/repository.py\", line 57, in finalize_new_version
  validate_repo_version(new_version)
File \"/usr/lib/python3.6/site-packages/pulpcore/plugin/repo_version_utils.py\", line 137, in validate_repo_version
  validate_duplicate_content(version)
File \"/usr/lib/python3.6/site-packages/pulpcore/plugin/repo_version_utils.py\", line 108, in validate_duplicate_content
  _(\"Cannot create repository version. {msg}\").format(msg=\", \".join(error_messages))
fao89 commented 2 years ago

From: @quba42 (quba42) Date: 2021-11-17T10:35:01Z


Directly printing the "package, version, architecture" (in the above example) along with their pulp_href for the duplicate units would be even nicer. Otherwise users will report a bunch of pulp_href to us, and we still won't be any wiser unless they also go and retrieve those units for us.

stale[bot] commented 2 years ago

This issue has been marked 'stale' due to lack of recent activity. If there is no further activity, the issue will be closed in another 30 days. Thank you for your contribution!