Status: New
Owner: ----
Labels: Type-Defect Priority-Medium
New issue 3956 by [email protected]: review requests with file
attachments get 500 errors after upgrade to 2.0.19
https://code.google.com/p/reviewboard/issues/detail?id=3956
*** READ THIS BEFORE POSTING!
***
*** You must complete this form in its entirety, or your bug report will be
*** rejected.
***
*** If you have a security issue to report, please send it confidentially
to
*** [email protected]. Posting security-related issues to this bug
*** tracker causes us to have to do an emergency release.
***
*** For customer support, please post to [email protected]
***
*** If you have a patch, please submit it to
http://reviews.reviewboard.org/
***
*** This bug tracker is public. Please check that any logs or other
information
*** that you include has been stripped of confidential information.
What version are you running?
2.0.19 recently upgraded from 2.0.16
What's the URL of the page containing the problem?
http://<internal-site>/r/12359/
What steps will reproduce the problem?
1. Try to load the review request.
What is the expected output? What do you see instead?
Instead of loading the page displays a 500 error. The error log shows:
2015-09-03 02:03:51,984 - ERROR - - Exception thrown for user chris at
http://<internal-site>/r/12359/
<generator object serialize_comments at 0x9fe202c> is not JSON serializable
Traceback (most recent call last):
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/core/handlers/base.py",
line 112, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/ReviewBoard-2.0.19-py2.7.egg/reviewboard/accounts/decorators.py",
line 23, in _check
return view_func(*args, **kwargs)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/ReviewBoard-2.0.19-py2.7.egg/reviewboard/site/decorators.py",
line 35, in _check
return view_func(request, local_site=local_site, *args, **kwargs)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/ReviewBoard-2.0.19-py2.7.egg/reviewboard/reviews/views.py",
line 721, in review_detail
RequestContext(request, context_data))
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/shortcuts/__init__.py",
line 29, in render_to_response
return HttpResponse(loader.render_to_string(*args, **kwargs),
**httpresponse_kwargs)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/loader.py",
line 164, in render_to_string
return t.render(Context(dictionary))
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/base.py",
line 140, in render
return self._render(context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/base.py",
line 134, in _render
return self.nodelist.render(context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/base.py",
line 840, in render
bit = self.render_node(node, context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/base.py",
line 854, in render_node
return node.render(context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/loader_tags.py",
line 123, in render
return compiled_parent._render(context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/base.py",
line 134, in _render
return self.nodelist.render(context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/base.py",
line 840, in render
bit = self.render_node(node, context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/base.py",
line 854, in render_node
return node.render(context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/loader_tags.py",
line 123, in render
return compiled_parent._render(context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/base.py",
line 134, in _render
return self.nodelist.render(context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/base.py",
line 840, in render
bit = self.render_node(node, context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/base.py",
line 854, in render_node
return node.render(context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/loader_tags.py",
line 62, in render
result = block.nodelist.render(context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/base.py",
line 840, in render
bit = self.render_node(node, context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/base.py",
line 854, in render_node
return node.render(context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/loader_tags.py",
line 155, in render
return self.render_template(self.template, context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/loader_tags.py",
line 137, in render_template
output = template.render(context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/base.py",
line 140, in render
return self._render(context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/base.py",
line 134, in _render
return self.nodelist.render(context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/base.py",
line 840, in render
bit = self.render_node(node, context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/base.py",
line 854, in render_node
return node.render(context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/defaulttags.py",
line 305, in render
return nodelist.render(context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/base.py",
line 840, in render
bit = self.render_node(node, context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/base.py",
line 854, in render_node
return node.render(context)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Django-1.6.11-py2.7.egg/django/template/defaulttags.py",
line 203, in render
nodelist.append(node.render(context))
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/Djblets-0.8.20-py2.7.egg/djblets/util/decorators.py",
line 122, in render
return self.tag_func(context, *args)
File "/home/delphix/reviewboard/rb-1.7.22/lib/python2.7/site-packages/ReviewBoard-2.0.19-py2.7.egg/reviewboard/reviews/templatetags/reviewtags.py",
line 92, in file_attachment_comments
file_attachment.get_comments()))
File "/home/delphix/reviewboard/python2.7/lib/python2.7/json/__init__.py",
line 243, in dumps
return _default_encoder.encode(obj)
File "/home/delphix/reviewboard/python2.7/lib/python2.7/json/encoder.py",
line 207, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/home/delphix/reviewboard/python2.7/lib/python2.7/json/encoder.py",
line 270, in iterencode
return _iterencode(o, 0)
File "/home/delphix/reviewboard/python2.7/lib/python2.7/json/encoder.py",
line 184, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <generator object serialize_comments at 0x9fe202c> is not JSON
serializable
The error started after upgrading to 2.0.19, immediately prior to the
upgrade that page was accessible. Other pages with file attachments also
had that problem. We where able to work around the problem by modifying
line 92 of reviewtags.py where the error occured to put the
serialize_comments() generator into a list:
return json.dumps(list(review_ui.serialize_comments(
file_attachment.get_comments())))
I was able to confirm with the following log statement just before line 92:
logging.critical("XXX " + type(review_ui).__name__)
return json.dumps(list(review_ui.serialize_comments(
file_attachment.get_comments())))
That the review_ui object's type is FileAttachmentReviewUI:
2015-09-03 02:03:51,984 - CRITICAL - - XXX FileAttachmentReviewUI
2015-09-03 02:03:51,984 - ERROR - - Exception thrown for user chris at
http://<internal-url>/r/12359/
<generator object serialize_comments at 0x9fe202c> is not JSON serializable
Traceback (most recent call last):
What operating system are you using? What browser?
Chrome on Linux. Linux server.
Please provide any additional information below.
--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings
--
You received this message because you are subscribed to the Google Groups
"reviewboard-issues" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/reviewboard-issues.
For more options, visit https://groups.google.com/d/optout.