Looking for software experts?
Need an expert advice on software development? Need consulting work done in time and at high standards? Tremend has the right solution for you.

We can provide expertise in:
  •    » high traffic and complex content website infrastructures using Java, PHP or .NET. More here ...
  •    » mobile applications for iPhone, Android or J2ME. More here ...

For an enquiry, send an email to contact [at] tremend [dot] ro.

File not found: transaction …, path …. SVN mysteries behind an Apache Reverse Proxy

December 6th, 2009 by Bogdan Nitulescu in General, Tools

We have an SVN server somewhere on our intranet, but since outside people want to access it, I put it behind an Apache reverse proxy. It was fairly straightforward. Here’s an excellent tutorial if you want to know how to do it: http://silmor.de/49 .

Basically, you have the intranet apache that’s configured to serve SVN, and you have an outside apache in your firewall’s DMZ that proxies the request:

ProxyPass /svn/ http://intranet.example.com/svn/
ProxyPassReverse
/svn/ http://intranet.example.com/svn/

It was all fine when people checked out their sources, but there were strange errors during commits. 7 files commits worked ok. When you tried 8 files or more, you got something like…

File not found: transaction ’431-12′, path ‘/parser/XMLparser/XMLparser.sln’

It took a lot of sweat to find out why 8 was the magic number – and after a lot of packet dumps and tracing, I found out that one of the servers used HTTP keepalives, and the other one rejected them.

So here’s a couple of rules not to be broken when proxying SVN requests:

Keep the same paths. Do not try something like ProxyPass /svn/ http://intranet.example.com/my_svn/ . It will fail with a cryptic error message at the worst of time.

Keep the same configuration.  Check your /etc/httpd/conf/httpd.conf on both servers for differences in your configuration. In my case, I had “KeepAlives On” in one server and “KeepAlives Off” in the other. When I put them both to On, it worked just fine.

DZoneGoogle ReaderYahoo MessengerRedditEmailDelicious

Related posts

  • Perforce Windows shell integration
    I'm happy again. Perforce shell integration used to make my machine hang on every file browse operation. As we are working with a remote Perforce server we've set up a Perforce proxy so we do not hit the...
  • Ant task for JavaScript compression
    By compressing javascript files page loading time is significantly reduced. Below I've wrote an ant task that can be used in a build file of a project to compress javascript source files. Before...
  • Apache Derby versus Hypersonic SQL
    There are several limitations and problems of Apache Derby as noted in the previous post (http://blog.tremend.ro/2006/10/03/about-the-maturity-of-apache-derby/), but with Derby it seems that you're still...
  • Create a Solr filter that replaces diacritics
    Some languages (like Romanian) have special characters (diacritics, often called accent marks). It's generally useful to remove diacritic marks from characters, for example when you create an index with...
  • AJAX file upload monitoring – monitor your file upload with DWR and commons-fileupload
    Monitoring your file upload using ajax is a must have for any web 2.0 application. There are already some good examples developed by prosson and carsonm. The first one looks great, but it is VERY slow....
.

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.