1373: Error accessing reviews with really long metadata

psc***@vmwar***** (Google Code) (Is this you? Claim this profile.)
Jan. 4, 2010
What version are you running?
Our main server is currently 1.0rc3, but I also saw this on a clone of the
server that I was using for testing which was upgraded to 1.0.5.1.

What's the URL of the page containing the problem?
http://reviewboard.eng.vmware.com/r/99124/ (this applies to a very small
number of review request pages)

What steps will reproduce the problem?
1. Try to access the page.

What is the expected output? What do you see instead?
This should show the review request page, but instead you get a 500 error.

Please provide any additional information below.
Here's the (sanitized) trace:

Traceback (most recent call last):

  File
"/usr/lib/python2.5/site-packages/Django-1.1.1-py2.5.egg/django/core/handlers/base.py",
line 92, in get_response
    response = callback(request, *callback_args, **callback_kwargs)

  File
"/usr/lib/python2.5/site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/accounts/decorators.py",
line 27, in _check
    return view_func(*args, **kwargs)

  File
"/usr/lib/python2.5/site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/reviews/views.py",
line 163, in review_detail
    for changedesc in changedescs:

  File
"/usr/lib/python2.5/site-packages/Django-1.1.1-py2.5.egg/django/db/models/query.py",
line 106, in _result_iter
    self._fill_cache()

  File
"/usr/lib/python2.5/site-packages/Django-1.1.1-py2.5.egg/django/db/models/query.py",
line 692, in _fill_cache
    self._result_cache.append(self._iter.next())

  File
"/usr/lib/python2.5/site-packages/Django-1.1.1-py2.5.egg/django/db/models/query.py",
line 251, in iterator
    obj = self.model(*row[index_start:aggregate_start])

  File
"/usr/lib/python2.5/site-packages/Django-1.1.1-py2.5.egg/django/db/models/base.py",
line 324, in __init__
    signals.post_init.send(sender=self.__class__, instance=self)

  File
"/usr/lib/python2.5/site-packages/Django-1.1.1-py2.5.egg/django/dispatch/dispatcher.py",
line 166, in send
    response = receiver(signal=self, sender=sender, **named)

  File
"/usr/lib/python2.5/site-packages/Djblets-0.5.5-py2.5.egg/djblets/util/fields.py",
line 174, in post_init
    value = self.loads(value)

  File
"/usr/lib/python2.5/site-packages/Djblets-0.5.5-py2.5.egg/djblets/util/fields.py",
line 206, in loads
    val = eval(val)

  File "<string>", line 1

    {"diff": {"added": [["Diff r2", "/r/96297/diff/2/", 250116]]},
"testing_done": {"new": [""], "old": ["[I've removed a rather large amount
of text here, but it ends with...] GetFileContents:: Ge

^

SyntaxError: EOL while scanning single-quoted string





The malformed string of python being eval'ed is, suspiciously, 65536 chars
long, so presumably something somewhere is cutting it off (I don't know the
various string limits involved very well so I'm not sure what level that
would happen at).

I'm fine with totally rejecting this much text if this limit is annoying to
work around (I may need to... have a talk with the folks who are posting
this much stuff in their change descriptions), but it would be nice if we
rejected it when the diff and associated data was uploaded so it didn't
result in a broken review request page.
david
#1 david
I don't think this is reasonable to add code for.
  • +WontFix