0

I maintain the computers and write software to control experiments and collect data at the research lab where I work. I run a subversion server (installed with brew) on the OS X machine at my desk. This lets me make software changes at any lab computer and keep all the stations in sync. The subversion server on my machine has been set up and running in /Library/LaunchDaemons for some years, originally under 10.5 on a G5 PowerMac and eventually transferred over to my current Intel iMac. I updated to Yosemite and did a brew upgrade and now svnserve no longer responds to clients. Here's my current org.apache.subversion.svnserve.plist file from /Library/LaunchDaemons:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>KeepAlive</key>
        <true/>
        <key>StandardErrorPath</key>
        <string>/Users/Shared/subversion/svnserve_err.log</string>
        <key>Umask</key>
        <integer>2</integer>
        <key>UserName</key>
        <string>steve</string>
        <key>GroupName</key>
        <string>everyone</string>
        <key>Label</key>
        <string>org.apache.subversion.svnserve</string>
        <key>RunAtLoad</key>
        <true/>
        <key>Program</key>
        <string>/usr/local/bin/svnserve</string>
        <key>ProgramArguments</key>
        <array>
                <string>svnserve</string>
                <string>--inetd</string>
                <string>--root=/Users/Shared/subversion</string>
                <string>--log-file=/Users/Shared/subversion/svn.log</string>
        </array>
        <key>ServiceDescription</key>
        <string>SVN Version Control System</string>
        <key>Sockets</key>
        <dict>
                <key>Listeners</key>
                <array>
                        <dict>
                                <key>Bonjour</key>
                                <true/>
                                <key>SockServiceName</key>
                                <string>svn</string>
                        </dict>
                </array>
        </dict>
        <key>inetdCompatibility</key>
        <dict>
                <key>Wait</key>
                <false/>
        </dict>
</dict>
</plist>

It seems to be running at startup:

/Library/LaunchDaemons 502 $  sudo launchctl list | grep svnserve
82245   0   org.apache.subversion.svnserve

If I run an svn command from a client (including the machine running svnserve) that requires a response from the server, it hangs. If I do sudo launchctl unload org.apache.subversion.svnserve.plist while the client is hung, the client command fails with:

svn: E000054: Unable to connect to a repository at URL 'svn://steveimac.local/igor/trunk'
svn: E000054: Can't read from connection: Connection reset by peer

So it does seem like there's some attempt at communication. If I do sudo launchctl unload org.apache.subversion.svnserve.plist and try running an svn client command I get Can't connect to host 'steveimac.local': Connection refused as expected.

Firewall is turned off in the machine's Security & Privacy preferences

The svn.log and svnserve_err.log files are both empty.

I added the StandardOutPath key to the plist. The stdout file was filled with many copies of ( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops depth log-revprops atomic-revprops partial-replay inherited-props ephemeral-txnprops file-revs-reverse ) ) ). Over a megabyte worth after thirty seconds or so. I don't know if that's normal.

svnserve version:

/Library/LaunchDaemons 503 $  /usr/local/bin/svnserve --version
svnserve, version 1.8.13 (r1667537)
   compiled Jun  5 2015, 19:21:21 on x86_64-apple-darwin14.3.0

Copyright (C) 2014 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 back-end (FS) modules are available:

* fs_fs : Module for working with a plain file (FSFS) repository.

Cyrus SASL authentication is available.

I'm not sure what to do next to try to troubleshoot.

Answers to questions in comments:

Permissions look ok:

/Users/Shared/subversion 495 $  ls -l ig*
igor:
total 16
-rw-r--r--   1 steve  wheel  229 Dec  8  2008 README.txt
drwxr-xr-x   5 steve  wheel  170 Dec  8  2008 conf
drwxr-xr-x   2 steve  wheel   68 Dec  8  2008 dav
drwxr-xr-x  12 steve  wheel  408 Jul 15 10:33 db
-r--r--r--   1 steve  wheel    2 Dec  8  2008 format
drwxr-xr-x  11 steve  wheel  374 Dec  8  2008 hooks
drwxr-xr-x   4 steve  wheel  136 Dec  8  2008 locks

igor-mike:
total 16
-rw-r--r--   1 steve  wheel  229 Jan 25  2011 README.txt
drwxr-xr-x   5 steve  wheel  170 Jan 25  2011 conf
drwxr-xr-x  16 steve  wheel  544 Oct  2  2013 db
-r--r--r--   1 steve  wheel    2 Jan 25  2011 format
drwxr-xr-x  11 steve  wheel  374 Jan 25  2011 hooks
drwxr-xr-x   4 steve  wheel  136 Jan 25  2011 locks

igorniscope:
total 16
-rw-r--r--   1 steve  wheel  229 Aug 16  2013 README.txt
drwxr-xr-x   5 steve  wheel  170 Aug 16  2013 conf
drwxr-xr-x  16 steve  wheel  544 Sep 13  2013 db
-r--r--r--   1 steve  wheel    2 Aug 16  2013 format
drwxr-xr-x  11 steve  wheel  374 Aug 16  2013 hooks
drwxr-xr-x   4 steve  wheel  136 Aug 16  2013 locks

sudo launchctl print-cache | grep svn returns nothing.


I'm not sure how to use launchctl plist in this situation. It wants a Mach-O as an argument.


Using localhost instead of steveimac.local displays the same symptoms.


Accessing through the file protocol on the host machine works fine:

~/Documents/deleteme 491 $  svn co file:///Users/Shared/subversion/igor/trunk igor
A    igor/AcousticControl.ipf
...
A    igor/AmplitudeSweep.ipf
A    igor/PowerMonitor.ipf

I tried svn info svn://steveimac.local and svn info svn://localhost which shouldn't be accessing any specific repository and it also hung. So it appears to be a communication issue, not a repository issue. Port 3690 seems to be open. With the daemon loaded, I tried telnet localhost 3690 and was able to connect. With the daemon unloaded, telnet localhost 3690 returned Connection refused.

  • Have you tried running launchctl print-cache |grep svn to see if the cached version is the correct version post update? Also you can try running launchctl plist ... command to verify that the plist is being read correctly? – Matt Jul 15 '15 at 20:03
  • On a somewhat related note did you check that all file ownerships and permissions are still correct after the OS update? Also can you try changing the path to use localhost instead of steveimac.local to see if that has any impact? – Matt Jul 15 '15 at 20:12
  • @Matt I edited the question with replies to your questions. – SSteve Jul 16 '15 at 17:24
  • Thanks for the update. I know this is a lot of questions but can you still access the repositories from the command line using file:/// URLs and/or does the issue only happen when attempting to use the web interface to the repository, e.g. would svn+ssh work correctly? – Matt Jul 16 '15 at 17:33
  • @Matt Answered. – SSteve Jul 16 '15 at 17:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.