Issue #3524
Updated by daviddavis over 6 years ago
In pulp_ansible, we have role versions and we're seeing the error below when the code hits dupe artifacts. The problem is that the artifact_q filter is empty: https://github.com/pulp/pulp/blob/3.0-dev/plugin/pulpcore/plugin/changeset/model.py#L376-L381 I think this doesn't happen for pulp_file because we're able to set the digests on the artifacts: https://github.com/pulp/pulp_file/blob/master/pulp_file/app/tasks/synchronizing.py#L161 This digest info comes from the metadata and in pulp_ansible's metadata, we don't have any digest info digests for artifacts. artifacts in pulp_ansible. <pre> Mar 23 19:12:00 pulp3.dev celery[2413]: Traceback (most recent call last): Mar 23 19:12:00 pulp3.dev celery[2413]: File "/home/vagrant/.virtualenvs/pulp/lib64/python3.5/site-packages/celery/app/trace.py", line 374, in trace_task Mar 23 19:12:00 pulp3.dev celery[2413]: R = retval = fun(*args, **kwargs) Mar 23 19:12:00 pulp3.dev celery[2413]: File "/home/vagrant/devel/pulp/pulpcore/pulpcore/tasking/tasks.py", line 273, in __call__ Mar 23 19:12:00 pulp3.dev celery[2413]: return super().__call__(*args, **kwargs) Mar 23 19:12:00 pulp3.dev celery[2413]: File "/home/vagrant/.virtualenvs/pulp/lib64/python3.5/site-packages/celery/app/trace.py", line 629, in __protected_call__ Mar 23 19:12:00 pulp3.dev celery[2413]: return self.run(*args, **kwargs) Mar 23 19:12:00 pulp3.dev celery[2413]: File "/home/vagrant/devel/pulp_ansible/pulp_ansible/app/tasks/synchronizing.py", line 80, in synchronize Mar 23 19:12:00 pulp3.dev celery[2413]: for report in changeset.apply(): Mar 23 19:12:00 pulp3.dev celery[2413]: File "/home/vagrant/devel/pulp/plugin/pulpcore/plugin/changeset/main.py", line 196, in apply Mar 23 19:12:00 pulp3.dev celery[2413]: for report in itertools.chain(self._apply_additions(), self._apply_removals()): Mar 23 19:12:00 pulp3.dev celery[2413]: File "/home/vagrant/devel/pulp/plugin/pulpcore/plugin/changeset/main.py", line 151, in _apply_additions Mar 23 19:12:00 pulp3.dev celery[2413]: content.settle() Mar 23 19:12:00 pulp3.dev celery[2413]: File "/home/vagrant/devel/pulp/plugin/pulpcore/plugin/changeset/model.py", line 189, in settle Mar 23 19:12:00 pulp3.dev celery[2413]: self.save() Mar 23 19:12:00 pulp3.dev celery[2413]: File "/home/vagrant/devel/pulp/plugin/pulpcore/plugin/changeset/model.py", line 210, in save Mar 23 19:12:00 pulp3.dev celery[2413]: artifact.save() Mar 23 19:12:00 pulp3.dev celery[2413]: File "/home/vagrant/devel/pulp/plugin/pulpcore/plugin/changeset/model.py", line 381, in save Mar 23 19:12:00 pulp3.dev celery[2413]: self._stored_model = Artifact.objects.get(q) Mar 23 19:12:00 pulp3.dev celery[2413]: File "/home/vagrant/.virtualenvs/pulp/lib64/python3.5/site-packages/django/db/models/manager.py", line 85, in manager_method Mar 23 19:12:00 pulp3.dev celery[2413]: return getattr(self.get_queryset(), name)(*args, **kwargs) Mar 23 19:12:00 pulp3.dev celery[2413]: File "/home/vagrant/.virtualenvs/pulp/lib64/python3.5/site-packages/django/db/models/query.py", line 384, in get Mar 23 19:12:00 pulp3.dev celery[2413]: (self.model._meta.object_name, num) Mar 23 19:12:00 pulp3.dev celery[2413]: pulpcore.app.models.content.MultipleObjectsReturned: get() returned more than one Artifact -- it returned 70! </pre>