4445: rbt post fails with "Error validating diff, HTTP 413"

vguna

What version are you running?

0.7.6

What steps will reproduce the problem?

  1. Create a feature branch from e.g. trunk
  2. Develop your feature with many changes (long running branch)
  3. Merge changes from trunk to your feature branch over time
  4. Continue development
  5. Try to post a review request for your feature branch
  6. rbt tools complains during post with "Error validating diff. HTTP 413"
  7. I also reduced the start/end revisions to locate the actual problem. As it seems it has problems with one of the trunk merges (to feature branch) that has 900KB in size.

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

RBT should simply accept the diff.

What operating system are you using?

Ubuntu 14.04

Attach the debug out from the command.

rbt post --debug --server=https://www.somewhere.org/reviewboard --repository-url=file:///var/local/svn/repo --username=svnhook --password=*** --submit-as=someone --branch=trunk/backend --target-groups=developers --summary=test --description=test 106 107


>>> RBTools 0.7.6
>>> Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2]
>>> Running on Linux-4.1.13-x86_64-jb1-x86_64-with-Ubuntu-14.04-trusty
>>> Home = /root
>>> Current directory = /var/www/reviewboard/logs
>>> Checking for a Subversion repository...
>>> Running: svn --non-interactive info file:///var/local/svn/repo
>>> Running: diff --version
>>> Running: svn --non-interactive --version -q
>>> repository info: Path: file:///var/local/svn/repo, Base path: /, Supports changesets: False
>>> Making HTTP GET request to https://www.somewhere.org/reviewboard/api/
>>> Making HTTP GET request to https://www.somewhere.org/reviewboard/api/repositories/?tool=Subversion
>>> Cached response for HTTP GET https://www.somewhere.org/reviewboard/api/repositories/?tool=Subversion expired and was modified
>>> Running: svn --non-interactive log --xml -r 106 -l 1 file:///var/local/svn/repo
>>> Running: svn --non-interactive log --xml -r 107 -l 1 file:///var/local/svn/repo
>>> Running: svn --non-interactive info file:///var/local/svn/repo
>>> Running: diff --version
>>> Running: svn --non-interactive --version -q
>>> repository info: Path: file:///var/local/svn/repo, Base path: /, Supports changesets: False
>>> Running: svn --non-interactive diff --diff-cmd=diff --notice-ancestry file:///var/local/svn/repo/@106 file:///var/local/svn/repo/@107
>>> Running: svn --non-interactive diff --diff-cmd=diff --notice-ancestry file:///var/local/svn/repo/@106 file:///var/local/svn/repo/@107 --no-diff-deleted
>>> Making HTTP GET request to https://www.somewhere.org/reviewboard/api/validation/diffs/
>>> Cached response for HTTP GET https://www.somewhere.org/reviewboard/api/validation/diffs/ expired and was modified
>>> Making HTTP POST request to https://www.somewhere.org/reviewboard/api/validation/diffs/
>>> Got HTTP error: 413: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>413 Request Entity Too Large</title>
</head><body>
<h1>Request Entity Too Large</h1>
The requested resource<br />/reviewboard/api/validation/diffs/<br />
does not allow request data with POST requests, or the amount of data provided in
the request exceeds the capacity limit.
<hr>
<address>Apache/2.4.7 (Ubuntu) Server at www.somewhere.org Port 443</address>
</body></html>

Traceback (most recent call last):
  File "/usr/local/bin/rbt", line 9, in <module>
    load_entry_point('RBTools==0.7.6', 'console_scripts', 'rbt')()
  File "/usr/local/lib/python2.7/dist-packages/RBTools-0.7.6-py2.7.egg/rbtools/commands/main.py", line 133, in main
    command.run_from_argv([RB_MAIN, command_name] + args)
  File "/usr/local/lib/python2.7/dist-packages/RBTools-0.7.6-py2.7.egg/rbtools/commands/__init__.py", line 629, in run_from_argv
    exit_code = self.main(*args) or 0
  File "/usr/local/lib/python2.7/dist-packages/RBTools-0.7.6-py2.7.egg/rbtools/commands/post.py", line 756, in main
    (msg_prefix, e))
rbtools.commands.CommandError: Error validating diff

HTTP 413

Please provide any additional information below.

I'm using SVN and Apache HTTPD. I also tried the --tracking-branch option but that doesn't seem to help - since only available for other SCMs (?).

#1 vguna

Ok. First fix was to add

SSLRenegBufferSize 10486000

To the Apache Location configuration of reviewboard.

After that the diff still failed by rbt complaining about a non existent file in the SVN.

In the end I got a working solution that simply creates the diff by using plain SVN commands and sending the diff via --diff-file.

I don't know what rbt does wrong.

david
#2 david
  • -New
    +UserError