"Unrecognized URL scheme" for http SVN urls

343 views
Skip to first unread message

Rob Petti

unread,
Jan 30, 2018, 4:40:43 PM1/30/18
to Review Board Community
Hi there,

I'm currently using ReviewBoard 2.5.16, and we're running into issues using it with http svn urls. Any time we try to post reviews we get this error back:
Unrecognized URL scheme for 'http://10.XX.XX.XX:89/svn/ourproject/16.4.0/run-tests.js' (HTTP 400, API Error 224)

I already checked the svn CLI installed on the RB host server, and it has http/https support:
[root@wlrbprod01 conf]# svn --version
svn, version 1.8.19 (r1800620)
   compiled Aug 10 2017, 22:07:28 on x86_64-unknown-linux-gnu

Copyright (C) 2017 The Apache Software Foundation.
This software consists of contributions made by many people;
see the NOTICE file for more information.
Subversion is open source software, see http://subversion.apache.org/

The following repository access (RA) modules are available:

* ra_svn : Module for accessing a repository using the svn network protocol.
  - with Cyrus SASL authentication
  - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' scheme
* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
  - using serf 1.3.4
  - handles 'http' scheme
  - handles 'https' scheme


Additionally, I manually tested pysvn, and it also works with http urls.

I'm frankly at a loss here, so any assistance would be appreciated! The host server is an RHEL6 machine with Python 2.7 installed. The full log from rbt follows:

> rbt post -d -o
>>> RBTools 0.7.10
>>> Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)]
>>> Running on Windows-10-10.0.14393
>>> Home = C:\Users\rpetti\AppData\Roaming
>>> Current directory = C:\Users\rpetti\Documents\rbtest
>>> Command line: rbt post -d -o
>>> Running: tf vc help
>>> Checking for a Subversion repository...
>>> Running: svn --non-interactive info
>>> Running: diff --version
>>> Running: svn --non-interactive --version -q
>>> repository info: Path: http://10.XX.XX.XX:89/svn/ourproject, Base path: /16.4.0, Supports changesets: False
>>> Making HTTP GET request to https://codereview.ourcomanydomain.com/api/
>>> Cached response for HTTP GET https://codereview.ourcomanydomain.com/api/repositories/?tool=Subversion expired and was modified
>>> Running: svn --non-interactive info
>>> Running: diff --version
>>> Running: svn --non-interactive --version -q
>>> repository info: Path: http://10.XX.XX.XX:89/svn/ourproject, Base path: /16.4.0, 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 run-tests.js
>>> Running: svn --non-interactive diff --diff-cmd=diff --notice-ancestry -r BASE --no-diff-deleted
>>> Running: svn --non-interactive info run-tests.js
>>> Running: svn --non-interactive info run-tests.js
>>> Running: svn --non-interactive info run-tests.js
>>> Cached response for HTTP GET https://codereview.ourcomanydomain.com/api/validation/diffs/ expired and was modified
>>> Got API Error 224 (HTTP code 400): Unrecognized URL scheme for 'http://10.XX.XX.XX:89/svn/ourproject/16.4.0/run-tests.js'
>>> Error data: {u'stat': u'fail', u'err': {u'msg': u"Unrecognized URL scheme for 'http://10.XX.XX.XX:89/svn/ourproject/16.4.0/run-tests.js'", u'code': 224}}
Traceback (most recent call last):
  File "C:\Program Files (x86)\RBTools\bin\..\Python27\Scripts\rbt-script.py", line 11, in <module>
    load_entry_point('RBTools==0.7.10', 'console_scripts', 'rbt')()
  File "C:\Program Files (x86)\RBTools\Python27\lib\site-packages\rbtools-0.7.10-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.10-py2.7.egg\rbtools\commands\__init__.py", line 663, in run_from_argv
    exit_code = self.main(*args) or 0
  File "C:\Program Files (x86)\RBTools\Python27\lib\site-packages\rbtools-0.7.10-py2.7.egg\rbtools\commands\post.py", line 812, in main
    (msg_prefix, e))
rbtools.commands.CommandError: Error validating diff

Unrecognized URL scheme for 'http://10.XX.XX.XX:89/svn/ourproject/16.4.0/run-tests.js' (HTTP 400, API Error 224)

~Rob

Christian Hammond

unread,
Jan 30, 2018, 9:10:12 PM1/30/18
to revie...@googlegroups.com
Hi Rob,

This error is coming directly from libsvn (by way of PySVN).

Can you show me the command line and PySVN testing you performed for this on the server?

Christian

--
Supercharge your Review Board with Power Pack: https://www.reviewboard.org/powerpack/
Want us to host Review Board for you? Check out RBCommons: https://rbcommons.com/
Happy user? Let us know! https://www.reviewboard.org/users/
---
You received this message because you are subscribed to the Google Groups "Review Board Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to reviewboard+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Christian Hammond
President/CEO of Beanbag
Makers of Review Board

Rob Petti

unread,
Jan 31, 2018, 12:42:00 AM1/31/18
to Review Board Community
Hi Christian,

I tested pysvn on our server by just using it to successfully checkout the repo in question:

[root@wlrbprod01 ~]# /usr/local/bin/python
Python 2.7.5 (default, Nov  5 2017, 11:12:51) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pysvn
>>> client = pysvn.Client()
>>> client.checkout("http://10.XX.XX.XX:89/svn/ourproject/16.4.0","/tmp/test")
<Revision kind=number 0>

The ReviewBoard logs don't show this failure or a trace for it, and I'm not sure how to get more debugging information out of it. As near as I can tell, both my test and reviewboard are using the exact same set of shared libraries for both pysvn and libsvn, including libsvn_ra_serf, which I believe provides the support for http schemas. This should be working, but I can't figure out why it isn't.
To unsubscribe from this group and stop receiving emails from it, send an email to reviewboard...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

Christian Hammond

unread,
Jan 31, 2018, 10:08:03 PM1/31/18
to revie...@googlegroups.com
Hi Rob,

Let's make sure it doesn't have to do with file-based lookups. We may need to run some tests. First, can you generate a diff with `rbt diff`, and then check the resulting diff for the run-tests.js file. I need the "---", "+++", and "Index:" lines for that entry.

Christian

To unsubscribe from this group and stop receiving emails from it, send an email to reviewboard+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

Rob Petti

unread,
Feb 1, 2018, 12:45:30 PM2/1/18
to Review Board Community
> rbt diff
Index: /16.4.0/run-tests.js
===================================================================
--- /16.4.0/run-tests.js        (revision 1315)
+++ /16.4.0/run-tests.js        (working copy)
@@ -1,3 +1,4 @@
+//test
 var appconfig = require(process.env.CCE2E_APPCONFIG_FILE || "./config/config.json");
 var variables = require("./config/variables.json");
 var elelocator = require("./config/elements_locator.json");
@@ -93,4 +94,4 @@
             takeScreenShotsOnlyForFailedSpecs: true
         }));
     }
-};
\ No newline at end of file
+};

We also noticed that the error presents itself in the WebUI on the new review screen before even selecting any files or diffs, so it doesn't seem related to the diffing:

I did some more digging of my own, and I suspect it's a shared library loading issue, since the same error is thrown when libsvn_ra_serf can't be located or loaded. When I run basically the same pysvn API code directly from python it works fine, but from Apache mod_wsgi or uwsgi it fails. I may end up having to recompile the whole stack.

Rob Petti

unread,
Feb 1, 2018, 5:44:19 PM2/1/18
to revie...@googlegroups.com
It looks like my hunch was correct. The person who originally configured this server used a yum repo from "Wandisco" in order to install subversion, and apparently it libraries did not play nicely with the libraries used by wsgi or reviewboard. I removed the repo, downgraded subversion to the version provided by the distribution, recompiled pysvn, and everything appears to be working fine now!

Thanks for the help! Telling me that it was an error directly from libsvn was enough to set me on the right track. :)

~Rob

You received this message because you are subscribed to a topic in the Google Groups "Review Board Community" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/reviewboard/5DWNaxlrs5g/unsubscribe.
To unsubscribe from this group and all its topics, send an email to reviewboard+unsubscribe@googlegroups.com.

Christian Hammond

unread,
Feb 2, 2018, 5:45:07 AM2/2/18
to revie...@googlegroups.com
Awesome! Glad you figured it out :)

Christian


To unsubscribe from this group and all its topics, send an email to reviewboard...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

--
Supercharge your Review Board with Power Pack: https://www.reviewboard.org/powerpack/
Want us to host Review Board for you? Check out RBCommons: https://rbcommons.com/
Happy user? Let us know! https://www.reviewboard.org/users/
---
You received this message because you are subscribed to the Google Groups "Review Board Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to reviewboard...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages