Defect #6327

Error parsing svn output: #<REXML::ParseException: No close tag for /lists/list>

Added by Joonas Pulakka about 9 years ago. Updated over 8 years ago.

Status:ClosedStart date:2010-09-08
Priority:NormalDue date:
Assignee:-% Done:

0%

Category:SCM
Target version:-
Resolution: Affected version:1.0.1

Description

  • Redmine: 1.0.1
  • Database version: MySQL 5.0
  • Ruby version: 1.8.7
  • Rails version: 2.3.5 (the one that came with Redmine in the vendor/ directory)
  • Subversion: 1.5.1

I'm trying to access repository using file:/// url (the repository is in the same server as Redmine). It doesn't work. redmine/log/production.log contains the following:

Shelling out: svn list --xml 'file:///var/svn/repository/'@HEAD --no-auth-cache --non-interactive
Error parsing svn output: #<REXML::ParseException: No close tag for /lists/list>
/usr/lib/ruby/1.8/rexml/parsers/treeparser.rb:28:in `parse'
/usr/lib/ruby/1.8/rexml/document.rb:228:in `build'
/usr/lib/ruby/1.8/rexml/document.rb:43:in `initialize'
etc...

When I run that exact svn command from shell as www-data user (as Redmine runs under Passenger), I get the following output, which seems perfectly valid:

poenttoe:/usr/local/lib/redmine-1.0.1$ svn list --xml 'file:///var/svn/repository/'@HEAD --no-auth-cache --non-interactive
<?xml version="1.0"?>
<lists>
<list
   path="file:///var/svn/repository">
<entry
   kind="dir">
<name>app</name>
<commit
   revision="34">
<author>jpulakka</author>
<date>2010-09-07T12:55:46.978106Z</date>
</commit>
</entry>
<entry
   kind="dir">
<name>components</name>
<commit
   revision="46">
<author>jpulakka</author>
<date>2010-09-07T13:53:52.115011Z</date>
</commit>
</entry>
<entry
   kind="dir">
<name>lib</name>
<commit
   revision="33">
<author>jpulakka</author>
<date>2010-09-07T12:41:20.975111Z</date>
</commit>
</entry>
</list>
</lists>

Seems somewhat similar to #3929 and #6312.

History

#1 Updated by Joonas Pulakka about 9 years ago

One notion: when provided with slightly wrong URL such as @'file://var/svn/repository/' (missing a slash), svn spits out something like this:

<?xml version="1.0"?>
<lists>
<list
   path="file://var/svn/repository">
svn: Unable to open an ra_local session to URL
svn: Local URL 'file://var/svn/repository' contains unsupported hostname

which would explain the "No close tag for /lists/list" parsing error - the tags are not indeed closed since the XML output is interrupted by an error message.

Is there a way to set up the logger so that the svn output, that Redmine tries to parse, would be there? Even though I do get proper output when executing the command that Redmine claims to be "Shelling out", could it be that Redmine is not getting the same output from svn for some reason?

#2 Updated by Joonas Pulakka about 9 years ago

  • Status changed from New to Resolved

Found it! Apache's error.log contained stuff like this:

svn: Unable to open an ra_local session to URL
svn: Unable to open repository 'file:///var/svn/repository'
svn: Can't open file '/var/svn/repository/format': Permission denied

Obviously Redmine was not executing the svn command as www-data as I thought it would. That resulted in error message in the svn output, which Redmine considered just malformed XML.

One config file, redmine/config/email.yml, was owned by root (even though all other config files were owned by www-data). Chowning it to www-data solved the problem. I have no idea why that file had such an effect, but... now it works.

This kind of problems could be more easily solved by adding a couple of debugging features:
  • Show svn output in the log.
  • Show which user Redmine runs as (this is not always obvious).

#3 Updated by Toshi MARUYAMA over 8 years ago

  • Category set to SCM

#4 Updated by Toshi MARUYAMA over 8 years ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF