3261: 2.0 beta 3 regression: "ordinal not in range(128)" when loading review with unicode characters

bruce*****@gmai***** (Google Code) (Is this you? Claim this profile.)
david
david
Feb. 27, 2014
A review that loads on 1.7.9 in production generates a UnicodeDecodeError on 2.0 beta 3 (a copy of the production data was upgraded). It looks very similar to the issue that was reported and fixed in http://code.google.com/p/reviewboard/issues/detail?id=957 .

What version are you running?
2.0 beta 3

What's the URL of the page containing the problem?
https://bcran-ubuntu01/r/34095/

What steps will reproduce the problem?
1. Visit the URL specified. It's not necessary to click View Diff etc.

What is the expected output? What do you see instead?
The review page should load. Instead, an http 500 error is displayed.

What operating system are you using? What browser?
Review Board is installed on Ubuntu Server 13.10, and the client is Firefox 27 on Windows 8.1.

Please provide any additional information below.

Traceback:

'ascii' codec can't decode byte 0xef in position 176: ordinal not in range(128)
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/core/handlers/base.py", line 114, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0beta3-py2.7.egg/reviewboard/accounts/decorators.py", line 21, in _check
    return login_required(view_func)(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/contrib/auth/decorators.py", line 22, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0beta3-py2.7.egg/reviewboard/site/decorators.py", line 35, in _check
    return view_func(request, local_site=local_site, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0beta3-py2.7.egg/reviewboard/reviews/views.py", line 649, in review_detail
    changedesc.fields_changed[field_id])
  File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0beta3-py2.7.egg/reviewboard/reviews/fields.py", line 159, in get_change_entry_sections_html
    'rendered_html': mark_safe(self.render_change_entry_html(info)),
  File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0beta3-py2.7.egg/reviewboard/reviews/builtin_fields.py", line 395, in render_change_entry_html
    counts = diffset.get_total_line_counts()
  File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0beta3-py2.7.egg/reviewboard/diffviewer/models.py", line 390, in get_total_line_counts
    for key, value in six.iteritems(filediff.get_line_counts()):
  File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0beta3-py2.7.egg/reviewboard/diffviewer/models.py", line 210, in get_line_counts
    self._recalculate_line_counts(self.diff_hash)
  File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0beta3-py2.7.egg/reviewboard/diffviewer/models.py", line 349, in _recalculate_line_counts
    self.diffset.repository.get_scmtool())
  File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0beta3-py2.7.egg/reviewboard/diffviewer/models.py", line 58, in recalculate_line_counts
    files = tool.get_parser(self.binary).parse()
  File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0beta3-py2.7.egg/reviewboard/scmtools/hg.py", line 60, in get_parser
    if data.lstrip().startswith('diff --git'):
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 176: ordinal not in range(128)
david
#1 david
  • +PendingReview
  • +Component-DiffParser
    +Component-SCMTools
  • +david
david
#2 david
Fixed in release-2.0.x (07aad8d). Thanks!
  • -PendingReview
    +Fixed