4285: rbt post - SVN - Unexpected error when validating the diff: list index out of range (HTTP 400, API Error 224)

markus.fischbacher

What version are you running?

Review Board 2.5.3, RBT Tools 0.7.4 + Python 2.7.6

What's the URL of the page containing the problem?

N/A

What steps will reproduce the problem?

  1. Change a file inside SVN working copy
  2. Post a review using rbt post inside this working directory
  3. rbt post finally shows an error

What is the expected output? What do you see instead?

I'll expect, that the diff is posted as a new review.
Instead I'm getting the following error:

RBTools 0.7.4
Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)]
Running on Windows-8-6.2.9200
Home = C:\Users\mf\AppData\Roaming
Current directory = D:\DEV\test-repo
Running: git version
Checking for a Subversion repository...
Running: svn --non-interactive info
Running: diff --version
Running: svn --non-interactive --version -q
repository info: Path: http://svn.efu.com/test-repo, Base path: /, Supports changesets: False
Making HTTP GET request to http://review.efu.com/api/
Making HTTP GET request to http://review.efu.com/api/repositories/
Cached response for HTTP GET http://review.efu.com/api/repositories/ expired and was modified
Running: svn --non-interactive info
Running: diff --version
Running: svn --non-interactive --version -q
repository info: Path: http://svn.efu.com/test-repo, Base path: /, Supports changesets: False
Running: svn --non-interactive status -q --ignore-externals
Running: svn --non-interactive diff --diff-cmd=diff --notice-ancestry -r BASE
Running: svn --non-interactive info trunk/ordner1/text1.txt
Running: svn --non-interactive info trunk/ordner1
Running: svn --non-interactive info trunk
Running: svn --non-interactive info trunk
Running: svn --non-interactive info .
Running: svn --non-interactive diff --diff-cmd=diff --notice-ancestry -r BASE --no-diff-deleted
Running: svn --non-interactive info trunk/ordner1/text1.txt
Running: svn --non-interactive info trunk/ordner1/text1.txt
Running: svn --non-interactive info trunk/ordner1/text1.txt
Running: svn --non-interactive info trunk
Running: svn --non-interactive info trunk
Running: svn --non-interactive info trunk
Running: svn --non-interactive info .
Running: svn --non-interactive info .
Running: svn --non-interactive info .
Making HTTP GET request to http://review.efu.com/api/validation/diffs/
Cached response for HTTP GET http://review.efu.com/api/validation/diffs/ expired and was modified
Making HTTP POST request to http://review.efu.com/api/validation/diffs/
Got API Error 224 (HTTP code 400): Unexpected error when validating the diff: list index out of range
Error data: {u'stat': u'fail', u'err': {u'msg': u'Unexpected error when validating the diff: list index out of range', u'code': 224}}
Traceback (most recent call last):
File "C:\Program Files (x86)\RBTools\bin..\Python27\Scripts\rbt-script.py", line 8, in <module>
load_entry_point('RBTools==0.7.4', 'console_scripts', 'rbt')()
File "C:\Program Files (x86)\RBTools\Python27\lib\site-packages\rbtools-0.7.4-py2.7.egg\rbtools\commands\main.py", line 133, in main
command.run_from_argv([RB_MAIN, command_name] + args)
File "C:\Program Files (x86)\RBTools\Python27\lib\site-packages\rbtools-0.7.4-py2.7.egg\rbtools\commands__init__.py", line 612, in run_from_argv
exit_code = self.main(*args) or 0
File "C:\Program Files (x86)\RBTools\Python27\lib\site-packages\rbtools-0.7.4-py2.7.egg\rbtools\commands\post.py", line 754, in main
(msg_prefix, e))
rbtools.commands.CommandError: Error validating diff

Unexpected error when validating the diff: list index out of range (HTTP 400, API Error 224)

The log of Review Board shows:

2016-03-02 09:28:11,966 - DEBUG - None - AnonymousUser - /api/ - Attempting authentication on API: username=sst, password=**
2016-03-02 09:28:11,972 - DEBUG - - Attempting to authenticate as CN=sst sst,OU=Systemaccounts,OU=euro,DC=euro,DC=com
2016-03-02 09:28:13,733 - DEBUG - - DiffParser.parse: Beginning parse of diff, size = 925
2016-03-02 09:28:13,733 - ERROR - - Unexpected error when validating diff.

Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.5.3-py2.7.egg/reviewboard/webapi/resources/validate_diff.py", line 156, in create
save=False)
File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.5.3-py2.7.egg/reviewboard/diffviewer/managers.py", line 417, in create_from_upload
save=save)
File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.5.3-py2.7.egg/reviewboard/diffviewer/managers.py", line 441, in create_from_data
check_existence=(not parent_diff_file_contents)))
File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.5.3-py2.7.egg/reviewboard/diffviewer/managers.py", line 557, in _process_files
for f in parser.parse():
File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.5.3-py2.7.egg/reviewboard/diffviewer/parser.py", line 59, in parse
next_linenum, new_file = self.parse_change_header(i)
File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.5.3-py2.7.egg/reviewboard/diffviewer/parser.py", line 100, in parse_change_header
linenum = self.parse_special_header(linenum, info)
File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.5.3-py2.7.egg/reviewboard/scmtools/svn/init.py", line 526, in parse_special_header
linenum, info)
File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.5.3-py2.7.egg/reviewboard/diffviewer/parser.py", line 162, in parse_special_header
info['index'] = self.lines[linenum].split(None, 1)[1]
IndexError: list index out of range
2016-03-02 09:28:14,081 - DEBUG - - Calculated issue counts for review request ID 744 across 1 review(s): Resulting counts = {u'R': 0, u'D': 0, u'O': 0}; DB values = [{u'screenshot_comments__issue_status': None, u'file_attachment_comments__pk': None, u'screenshot_comments__issue_opened': None, u'comments__pk': None, u'comments__issue_opened': None, u'file_attachment_comments__issue_opened': None, u'screenshot_comments__pk': None, u'comments__issue_status': None, u'file_attachment_comments__issue_status': None}]; Field IDs = {u'screenshot_comments': set([]), u'comments': set([]), u'file_attachment_comments': set([])}

What operating system are you using? What browser?

Review Board is running on Ubuntu 14.04.3 LTS, Apache 2.4.7
SVN is running on Ubuntu 14.04.3 LTS, Apache 2.4.7, SVN 1.8.8
RBTools 2.7.6 are executed on Windows 10 Enterprise x64 with Python 2.7.6

Please provide any additional information below.

I've attached the diff which should be posted to Review Board.
The diff contains beside textual changes also property changes.
Already posted infos on https://groups.google.com/forum/#!topic/reviewboard/J9RHiVnaNQg

Index: /trunk/ordner1/text1.txt
===================================================================
--- /trunk/ordner1/text1.txt	(revision 30)
+++ /trunk/ordner1/text1.txt	(working copy)
@@ -3,4 +3,5 @@
 test
 
 test
-bla bla
\ No newline at end of file
+bla bla
+test
\ No newline at end of file
Index: /trunk
===================================================================
--- /trunk	(revision 1)
+++ /trunk	(working copy)
Property changes on: trunk
___________________________________________________________________
Added: reviewboard:url
## -0,0 +1 ##
+http://review.efu.com
\ No newline at end of property
Index: 
===================================================================
--- 	(revision 0)
+++ 	(working copy)
Property changes on: .
___________________________________________________________________
Added: reviewboard:url
## -0,0 +1 ##
+http://review.efu.com
\ No newline at end of property