Closed Bug 1315395 Opened 8 years ago Closed 8 years ago

500 ISE errors when dealing with patches that use tabs to change the indentation of existing lines

Categories

(MozReview Graveyard :: General, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: fauweh, Assigned: glob)

Details

Attachments

(1 file)

Reported by :jaws in #moc.

<jaws> hey #moc, i'm getting HTTP 500 errors on mozreview when trying to publish review feedback
<jaws> i just get a message box with "HTTP 500 INTERNAL SERVER ERROR"
<jaws> yeah i get a 500 when i click the Publish button on this review, https://reviewboard.mozilla.org/r/90168/diff/1#index_header

On reviewboard2.webapp.scl3.mozilla.com:/var/log/reviewboard/reviewboard.log I found the following, followed by some python errors:

4523:2016-11-04 22:55:54,731 - INFO -  - Publishing review for user: jaws review id: 90536 review request id: 90168
4539:2016-11-04 22:55:55,253 - ERROR -  - Exception thrown for user jaws at https://reviewboard.mozilla.org/api/review-requests/90168/reviews/90536/
4599:2016-11-04 22:56:26,912 - INFO -  - Publishing review for user: jaws review id: 90536 review request id: 90168
4615:2016-11-04 22:56:27,167 - ERROR -  - Exception thrown for user jaws at https://reviewboard.mozilla.org/api/review-requests/90168/reviews/90536/
4686:2016-11-04 22:59:21,931 - INFO -  - Publishing review for user: jaws review id: 90536 review request id: 90168
4702:2016-11-04 22:59:22,054 - ERROR -  - Exception thrown for user jaws at https://reviewboard.mozilla.org/api/review-requests/90168/reviews/90536/
4757:2016-11-04 23:08:17,597 - INFO -  - Publishing review for user: jaws review id: 90536 review request id: 90168
4773:2016-11-04 23:08:17,785 - ERROR -  - Exception thrown for user jaws at https://reviewboard.mozilla.org/api/review-requests/90168/reviews/90536/

2016-11-04 22:56:27,162 - ERROR -  - Error when calling <function on_review_publishing at 0x7f44dedf3aa0> from SignalHook: pop from empty list
Summary: 500 ISE errors when posting review → 500 ISE errors when posting review to reviewboard.m.o
I'm still getting this error today on the same review. It won't let me publish it. Any work-arounds?
Flags: needinfo?(kferrando)
Group: infra → mozilla-employee-confidential
Product: Developer Services → MozReview
Two tracebacks for the prices of one:

Traceback (most recent call last):
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/djblets/extensions/hooks.py", line 196, in _wrap_callback
    self.callback(extension=self.extension, **kwargs)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/mozreview-0.1.2a0-py2.6.egg/mozreview/bugzilla/errors.py", line 28, in _transform_errors
    return func(*args, **kwargs)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/mozreview-0.1.2a0-py2.6.egg/mozreview/signal_handlers.py", line 652, in on_review_publishing
    {"user": user})
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/mozreview-0.1.2a0-py2.6.egg/mozreview/diffs.py", line 337, in build_plaintext_review
    review.is_reply()))
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/mozreview-0.1.2a0-py2.6.egg/mozreview/diffs.py", line 310, in render_comment_plain
    lines.extend(render_equal_chunk(chunk, parser))
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/mozreview-0.1.2a0-py2.6.egg/mozreview/diffs.py", line 191, in render_equal_chunk
    replace_chars.pop()
IndexError: pop from empty list

... and ...

Traceback (most recent call last):
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/django/core/handlers/base.py", line 112, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/lib64/python2.6/site-packages/newrelic-2.44.0.36/newrelic/hooks/framework_django.py", line 497, in wrapper
    return wrapped(*args, **kwargs)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/django/views/decorators/cache.py", line 52, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/django/views/decorators/vary.py", line 19, in inner_func
    response = func(*args, **kwargs)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/djblets/webapi/resources/base.py", line 196, in __call__
    request, method, view, api_format=api_format, *args, **kwargs)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/djblets/webapi/resources/mixins/api_tokens.py", line 65, in call_method_view
    return view(request, *args, **kwargs)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/djblets/webapi/resources/base.py", line 464, in put
    return self.update(request, *args, **kwargs)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/djblets/webapi/decorators.py", line 122, in _call
    return view_func(*args, **kwargs)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/ReviewBoard-2.5.4.moz-py2.6.egg/reviewboard/webapi/decorators.py", line 139, in _check
    return view_func(*args, **kwargs)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/djblets/webapi/decorators.py", line 122, in _call
    return view_func(*args, **kwargs)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/djblets/webapi/decorators.py", line 143, in _checklogin
    return view_func(*args, **kwargs)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/djblets/webapi/decorators.py", line 122, in _call
    return view_func(*args, **kwargs)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/djblets/webapi/decorators.py", line 122, in _call
    return view_func(*args, **kwargs)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/djblets/webapi/decorators.py", line 307, in _validate
    return view_func(*args, **new_kwargs)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/ReviewBoard-2.5.4.moz-py2.6.egg/reviewboard/webapi/resources/base_review.py", line 256, in update
    return self._update_review(request, review, *args, **kwargs)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/ReviewBoard-2.5.4.moz-py2.6.egg/reviewboard/webapi/resources/base_review.py", line 303, in _update_review
    review.publish(user=request.user)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/ReviewBoard-2.5.4.moz-py2.6.egg/reviewboard/reviews/models/review.py", line 222, in publish
    review=self)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/django/dispatch/dispatcher.py", line 185, in send
    response = receiver(signal=self, sender=sender, **named)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/djblets/extensions/hooks.py", line 196, in _wrap_callback
    self.callback(extension=self.extension, **kwargs)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/mozreview-0.1.2a0-py2.6.egg/mozreview/bugzilla/errors.py", line 28, in _transform_errors
    return func(*args, **kwargs)
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/mozreview-0.1.2a0-py2.6.egg/mozreview/signal_handlers.py", line 652, in on_review_publishing
    {"user": user})
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/mozreview-0.1.2a0-py2.6.egg/mozreview/diffs.py", line 337, in build_plaintext_review
    review.is_reply()))
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/mozreview-0.1.2a0-py2.6.egg/mozreview/diffs.py", line 310, in render_comment_plain
    lines.extend(render_equal_chunk(chunk, parser))
  File "/data/www/reviewboard.mozilla.org/venv/lib/python2.6/site-packages/mozreview-0.1.2a0-py2.6.egg/mozreview/diffs.py", line 191, in render_equal_chunk
    replace_chars.pop()
IndexError: pop from empty list
Flags: needinfo?(kferrando)
looks like something about that patch is breaking the handling of the indentation.
that patch is unusual because it contains tabs and some lines are CRLF delimited.
i can reproduce this issue in my dev environment; working on it.
Assignee: nobody → glob
Group: mozilla-employee-confidential
Summary: 500 ISE errors when posting review to reviewboard.m.o → 500 ISE errors when dealing with patches that use tabs to change the indentation of existing lines
Comment on attachment 8808483 [details]
mozreview: fix handling of tab-indented lines (bug 1315395);

https://reviewboard.mozilla.org/r/91316/#review91590

Thanks for fixing this up, sooo much nicer now.

::: pylib/mozreview/mozreview/diffs.py:188
(Diff revision 1)
> -            elif chars[index] == "&" and chars[index + 1] == "m":  # "&mdash;".
> -                # One of the spaces we translated before
> -                # was actually part of this tab we've
> +                # Skip &gt; prefix.
> +                if chars[index:index + 4] == "&gt;":
> +                    index += 4

I had thought these characters were actually part of the tabs length, should we not be incrementing the `current_width`?

::: pylib/mozreview/mozreview/diffs.py:197
(Diff revision 1)
> +                # Skip &gt; suffix.
> +                if chars[index:index + 4] == "&gt;":
> +                    index += 4

again, should we not increment the `current_width`?

::: pylib/mozreview/mozreview/diffs.py:216
(Diff revision 1)
> +                if index > 0:
> -                replace_chars.pop()
> +                    replace_chars.pop()

Is there really a case where this triggers? or are you just being defensive?
Attachment #8808483 - Flags: review?(smacleod) → review+
Comment on attachment 8808483 [details]
mozreview: fix handling of tab-indented lines (bug 1315395);

https://reviewboard.mozilla.org/r/91316/#review91590

> Is there really a case where this triggers? or are you just being defensive?

defensive - should the rb formatting change again i'd prefer to output the wrong number of spaces in bugzilla than crash.
Pushed by bjones@mozilla.com:
https://hg.mozilla.org/hgcustom/version-control-tools/rev/ba836bfdca9a
mozreview: fix handling of tab-indented lines ; r=smacleod
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: