Issue #3899
closedFailed PULP_MANIFEST downloads aren't reported to the user
Description
https://repos.fedorapeople.org/pulp/pulp/fixtures/file-mixed/ contains the following:
- 1.iso
- 2.iso
- 3.iso
- PULP_MANIFEST
The manifest contains the following:
1.iso,d7f9af3ef82087102149dab1de79f90cbc164fd052d6b0dd32fea4f756af99f0,1024
2.iso,687bfda765f741bfafe171713a4876bfbb4b38c4d85d8d3e138b94af6d0f4bcc,1024
3.iso,fa9686383b6fdd9ba86f60421e905cdfb619085b08188a2e5ca7d74b2afc531a,1024
missing-1.iso,4a36e4eede4a61fd547040b53b1656b6dd489bd5bc4c0dd5fe55892dcf1669e8,1048576
missing-2.iso,ab6d91d4956d1a009bd6d03b3591f95aaae83b36907f77dd1ac71c400715b901,2097152
As you can see, the manifest references files that don't exist. Let's say that one creates a repository, sets its importer URL to https://repos.fedorapeople.org/pulp/pulp/fixtures/file-mixed/, and syncs the repository. In this case, Pulp should report an error with the sync. Unfortunately, Pulp does no such thing. It acts as if the sync succeeded. Peeking into journalctl shows why:
Aug 02 13:22:20 rhel-7-pulp-2-17-nightly pulp[1880]: nectar.downloaders.threaded:INFO: Download failed: Download of https://repos.fedorapeople.org/pulp/pulp/fixtures/file-mixed/missing-1.iso failed with code 404: Not Found
Aug 02 13:22:20 rhel-7-pulp-2-17-nightly pulp[1880]: nectar.downloaders.base:ERROR: (1880-30304) download_failed() takes exactly 3 arguments (2 given)
Aug 02 13:22:20 rhel-7-pulp-2-17-nightly pulp[1880]: nectar.downloaders.base:ERROR: (1880-30304) Traceback (most recent call last):
Aug 02 13:22:20 rhel-7-pulp-2-17-nightly pulp[1880]: nectar.downloaders.base:ERROR: (1880-30304) File "/usr/lib/python2.7/site-packages/nectar/downloaders/base.py", line 145, in _fire_event_to_listener
Aug 02 13:22:20 rhel-7-pulp-2-17-nightly pulp[1880]: nectar.downloaders.base:ERROR: (1880-30304) event_listener_callback(*args, **kwargs)
Aug 02 13:22:20 rhel-7-pulp-2-17-nightly pulp[1880]: nectar.downloaders.base:ERROR: (1880-30304) TypeError: download_failed() takes exactly 3 arguments (2 given)
Aug 02 13:22:20 rhel-7-pulp-2-17-nightly pulp[1880]: nectar.downloaders.threaded:INFO: Download succeeded: https://repos.fedorapeople.org/pulp/pulp/fixtures/file-mixed/3.iso.
Aug 02 13:22:20 rhel-7-pulp-2-17-nightly pulp[1880]: nectar.downloaders.threaded:INFO: Download succeeded: https://repos.fedorapeople.org/pulp/pulp/fixtures/file-mixed/2.iso.
Aug 02 13:22:20 rhel-7-pulp-2-17-nightly pulp[1880]: nectar.downloaders.threaded:INFO: Download failed: Download of https://repos.fedorapeople.org/pulp/pulp/fixtures/file-mixed/missing-2.iso failed with code 404: Not Found
Aug 02 13:22:20 rhel-7-pulp-2-17-nightly pulp[1880]: nectar.downloaders.base:ERROR: (1880-06496) download_failed() takes exactly 3 arguments (2 given)
Aug 02 13:22:20 rhel-7-pulp-2-17-nightly pulp[1880]: nectar.downloaders.base:ERROR: (1880-06496) Traceback (most recent call last):
Aug 02 13:22:20 rhel-7-pulp-2-17-nightly pulp[1880]: nectar.downloaders.base:ERROR: (1880-06496) File "/usr/lib/python2.7/site-packages/nectar/downloaders/base.py", line 145, in _fire_event_to_listener
Aug 02 13:22:20 rhel-7-pulp-2-17-nightly pulp[1880]: nectar.downloaders.base:ERROR: (1880-06496) event_listener_callback(*args, **kwargs)
Aug 02 13:22:20 rhel-7-pulp-2-17-nightly pulp[1880]: nectar.downloaders.base:ERROR: (1880-06496) TypeError: download_failed() takes exactly 3 arguments (2 given)
Aug 02 13:22:20 rhel-7-pulp-2-17-nightly pulp[1880]: nectar.downloaders.threaded:INFO: Download succeeded: https://repos.fedorapeople.org/pulp/pulp/fixtures/file-mixed/1.iso.
This issue occurs on the latest nightly builds of Pulp 2 (to-be 2.17) on both F27 and RHEL 7. Here's some of the RPMs installed on a sample test VM:
[root@rhel-7-pulp-2-17-nightly ~]# rpm -qa | grep -i 'solv\|pulp' | sort
libsolv-0.6.34-4.el7.x86_64
pulp-admin-client-2.17.0-0.1.alpha.201808010512git0697ade.el7.noarch
pulp-deb-admin-extensions-1.8.0-0.1.alpha.201808010517git4df9825.el7.noarch
pulp-deb-plugins-1.8.0-0.1.alpha.201808010517git4df9825.el7.noarch
pulp-docker-admin-extensions-3.2.0-0.1.alpha.201808010504git4356228.el7.noarch
pulp-docker-plugins-3.2.0-0.1.alpha.201808010504git4356228.el7.noarch
pulp-ostree-admin-extensions-1.4.0-0.1.alpha.201808010506git2c2d534.el7.noarch
pulp-ostree-plugins-1.4.0-0.1.alpha.201808010506git2c2d534.el7.noarch
pulp-puppet-admin-extensions-2.17.0-0.1.alpha.201808010507git44a02f8.el7.noarch
pulp-puppet-plugins-2.17.0-0.1.alpha.201808010507git44a02f8.el7.noarch
pulp-puppet-tools-2.17.0-0.1.alpha.201808010507git44a02f8.el7.noarch
pulp-python-admin-extensions-2.1.0-0.1.alpha.201808010503git5e2aa35.el7.noarch
pulp-python-plugins-2.1.0-0.1.alpha.201808010503git5e2aa35.el7.noarch
pulp-rpm-admin-extensions-2.17.0-0.1.alpha.201808010509git421caf4.el7.noarch
pulp-rpm-plugins-2.17.0-0.1.alpha.201808010509git421caf4.el7.noarch
pulp-selinux-2.17.0-0.1.alpha.201808010512git0697ade.el7.noarch
pulp-server-2.17.0-0.1.alpha.201808010512git0697ade.el7.noarch
python2-solv-0.6.34-4.el7.x86_64
python-isodate-0.5.0-4.pulp.el7.noarch
python-pulp-bindings-2.17.0-0.1.alpha.201808010512git0697ade.el7.noarch
python-pulp-client-lib-2.17.0-0.1.alpha.201808010512git0697ade.el7.noarch
python-pulp-common-2.17.0-0.1.alpha.201808010512git0697ade.el7.noarch
python-pulp-deb-common-1.8.0-0.1.alpha.201808010517git4df9825.el7.noarch
python-pulp-docker-common-3.2.0-0.1.alpha.201808010504git4356228.el7.noarch
python-pulp-oid_validation-2.17.0-0.1.alpha.201808010512git0697ade.el7.noarch
python-pulp-ostree-common-1.4.0-0.1.alpha.201808010506git2c2d534.el7.noarch
python-pulp-puppet-common-2.17.0-0.1.alpha.201808010507git44a02f8.el7.noarch
python-pulp-python-common-2.1.0-0.1.alpha.201808010503git5e2aa35.el7.noarch
python-pulp-repoauth-2.17.0-0.1.alpha.201808010512git0697ade.el7.noarch
python-pulp-rpm-common-2.17.0-0.1.alpha.201808010509git421caf4.el7.noarch
python-pulp-streamer-2.17.0-0.1.alpha.201808010512git0697ade.el7.noarch
The easiest way to reproduce this issue is by executing an existing test case with python -m unittest --verbose pulp_2_tests.tests.rpm.api_v2.test_iso_crud.PulpManifestTestCase
. This is a regression.
Related issues
Fixing arity problem in iso's DownloadEventListener
The DownloadEventListener interface defines download_failed(self, report) and this restores the arity.
fixes #3899 https://pulp.plan.io/issues/3899