What does 'no locks available' mean?

Solution 1:

There's a few possibilities here:

  1. The user account that is doing the SVN update may not have update permission on the repository directory
  2. The NFS file system where the repository is stored may be full
  3. The lock daemon (lockd) may not be running on the NFS server.

UPDATE: following the update to the question, I'd suspect #3. Make sure that lockd is set up to start when the NFS server is rebooted.

Solution 2:

Make sure that your NFS server supports locks; you may need to enable additional processes on the NFS server to accomplish this; see rpc.lockd(8) and rpc.statd(8).

Additionally, if your NFS server has restarted recently, you may have a stale or even a partially stale NFS mount. Try unmounting and remounting the NFS mount as well.

EDIT: based on your other question, it looks like lockd didn't start after your NFS server recovered from it's crash.

Solution 3:

There are a number of alternatives mentioned in this google search for terms you mentioned above.

A few of the options mentioned are: full discs, permissions issues, "hung" or "stuck" svnserve processes, and hung transactions... You may need to try a number of these different issues to see what exactly the problem is in your case.

It sounds like you are using the bsddb SVN back-end? You may want to try migrating your repository over to the fsfs back-end (the default for several years now). It has, in my experience and from that of a number of others I know, proven more reliable than bsddb. Though you'll want to research how it interacts with NFS -- I haven't used it on NFS.

Another option you may want to consider is moving away from using SVN over NFS and instead running it over SSH on a server with the SVN repository locally stored. This is how we do all our SVN work, with fsfs backend, and I can't remember the last time we had SVN repository issues.

Sean