opendatateam / udata

Customizable and skinnable social platform dedicated to open data.
http://udata.readthedocs.org
GNU Affero General Public License v3.0
238 stars 87 forks source link

Error on discussions API #975

Closed abulte closed 5 years ago

abulte commented 7 years ago

Detailed Description

Backend error when accessing the discussions API from a dataset page.

Context

Traceback

ERROR: Exception on /api/1/discussions/ [GET]
  | Traceback (most recent call last):
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/flask/app.py", line 1612, in full_dispatch_request
  |     rv = self.dispatch_request()
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/flask/app.py", line 1598, in dispatch_request
  |     return self.view_functions[rule.endpoint](**req.view_args)
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/flask_restplus/cors.py", line 38, in wrapped_function
  |     resp = make_response(f(*args, **kwargs))
  |   File "/Users/alexandre/Developer/Etalab/udata/udata/api/__init__.py", line 118, in wrapper
  |     return func(*args, **kwargs)
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/flask_restplus/api.py", line 313, in wrapper
  |     resp = resource(*args, **kwargs)
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/flask/views.py", line 84, in view
  |     return self.dispatch_request(*args, **kwargs)
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/flask_restplus/resource.py", line 44, in dispatch_request
  |     resp = meth(*args, **kwargs)
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/flask_restplus/marshalling.py", line 110, in wrapper
  |     return marshal(resp, self.fields, self.envelope, mask)
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/flask_restplus/marshalling.py", line 56, in marshal
  |     out = OrderedDict(items)
  |   File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/collections.py", line 69, in __init__
  |     self.__update(*args, **kwds)
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/bin/../lib/python2.7/_abcoll.py", line 571, in update
  |     for key, value in other:
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/flask_restplus/marshalling.py", line 54, in <genexpr>
  |     for k, v in fields.items())
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/flask_restplus/fields.py", line 284, in output
  |     return self.format(value)
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/flask_restplus/fields.py", line 277, in format
  |     for idx, val in enumerate(value)
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/flask_restplus/fields.py", line 217, in output
  |     return marshal(value, self.nested)
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/flask_restplus/marshalling.py", line 56, in marshal
  |     out = OrderedDict(items)
  |   File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/collections.py", line 69, in __init__
  |     self.__update(*args, **kwds)
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/bin/../lib/python2.7/_abcoll.py", line 571, in update
  |     for key, value in other:
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/flask_restplus/marshalling.py", line 54, in <genexpr>
  |     for k, v in fields.items())
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/flask_restplus/fields.py", line 217, in output
  |     return marshal(value, self.nested)
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/flask_restplus/marshalling.py", line 56, in marshal
  |     out = OrderedDict(items)
  |   File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/collections.py", line 69, in __init__
  |     self.__update(*args, **kwds)
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/bin/../lib/python2.7/_abcoll.py", line 571, in update
  |     for key, value in other:
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/flask_restplus/marshalling.py", line 54, in <genexpr>
  |     for k, v in fields.items())
  |   File "/Users/alexandre/Developer/Etalab/udata/udata/api/fields.py", line 38, in output
  |     return url_for(self.endpoint, _external=True, **self.mapper(obj))
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/flask/helpers.py", line 333, in url_for
  |     return appctx.app.handle_url_build_error(error, endpoint, values)
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/flask/app.py", line 1805, in handle_url_build_error
  |     reraise(exc_type, exc_value, tb)
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/flask/helpers.py", line 323, in url_for
  |     force_external=external)
  |   File "/Users/alexandre/Developer/Etalab/udata/pyenv/lib/python2.7/site-packages/werkzeug/routing.py", line 1768, in build
  |     raise BuildError(endpoint, values, method, self)
  | BuildError: Could not build url for endpoint u'api.user'. Did you forget to specify values ['user']?

Possible Implementation

Your Environment

Local environment on dev branch.

thom4parisot commented 7 years ago

@abulte what is the api.user endpoint mentioned on the last line? Is the user value something which is configured on your side? (if so, should it be mentioned somewhere in the documentation?)

abulte commented 7 years ago

@oncletom I did not dive into it, I just want to reference it and discuss it first. I do no think it's related to a configuration value though.

abulte commented 7 years ago

Can not reproduce this on a fresh dev instance. Need more tests to find reproduction scenario.

abulte commented 6 years ago

This happened twice on production in July : https://sentry.data.gouv.fr/etalab/www-datagouvfr/?query=is%3Aunresolved+BuildError%3A+Could+not+build+url+for+endpoint+u%27api.user%27

Not a serious issue but keeping this opened for reference.

noirbizarre commented 5 years ago

Doesn't seem to happen again. Can I close ?