Project

Profile

Help

Issue #3449

Updated by daviddavis over 6 years ago

In #3448, we agreed to add documentation as a stopgap solution for the distribution basepath overlap problem. However, it looks like if you do proceed to overlap basepaths, distributors, you get an error: 

 <pre> 
 Mar 09 18:04:04 pulp3.dev pulp[19680]: django.request:ERROR: Internal Server Error: /content/foo/bar/test.iso 
 Traceback (most recent call last): 
   File "/home/vagrant/.virtualenvs/pulp/lib64/python3.5/site-packages/django/core/handlers/exception.py", line 41, in inner 
     response = get_response(request) 
   File "/home/vagrant/.virtualenvs/pulp/lib64/python3.5/site-packages/django/core/handlers/base.py", line 249, in _legacy_get_response 
     response = self._get_response(request) 
   File "/home/vagrant/.virtualenvs/pulp/lib64/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response 
     response = self.process_exception_by_middleware(e, request) 
   File "/home/vagrant/.virtualenvs/pulp/lib64/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response 
     response = wrapped_callback(request, *callback_args, **callback_kwargs) 
   File "/home/vagrant/.virtualenvs/pulp/lib64/python3.5/site-packages/django/views/generic/base.py", line 68, in view 
     return self.dispatch(request, *args, **kwargs) 
   File "/home/vagrant/.virtualenvs/pulp/lib64/python3.5/site-packages/django/views/generic/base.py", line 88, in dispatch 
     return handler(request, *args, **kwargs) 
   File "/home/vagrant/devel/pulp/pulpcore/pulpcore/app/views/content.py", line 210, in get 
     storage_path = self._match(path) 
   File "/home/vagrant/devel/pulp/pulpcore/pulpcore/app/views/content.py", line 97, in _match 
     distribution = self._match_distribution(path) 
   File "/home/vagrant/devel/pulp/pulpcore/pulpcore/app/views/content.py", line 73, in _match_distribution 
     return Distribution.objects.get(base_path__in=base_paths) 
   File "/home/vagrant/.virtualenvs/pulp/lib64/python3.5/site-packages/django/db/models/manager.py", line 85, in manager_method 
     return getattr(self.get_queryset(), name)(*args, **kwargs) 
   File "/home/vagrant/.virtualenvs/pulp/lib64/python3.5/site-packages/django/db/models/query.py", line 384, in get 
     (self.model._meta.object_name, num) 
 pulpcore.app.models.publication.MultipleObjectsReturned: get() returned more than one Distribution -- it returned 2! 
 </pre> 

 Relevant bit of code: 

 https://github.com/pulp/pulp/blob/3.0-dev/pulpcore/pulpcore/app/views/content.py#L73 

 A few possible solutions: 

 1. Solve #3051 
 2. Change get() on line 73 to first() 
 3. Do nothing except update the documentation with a warning (#3448) and tell users "I told you so"

Back