pkgsrc-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pkg/40229: NetBSD pkgsrc/devel/subversion-base - NFS-mounted repository failures
The following reply was made to PR pkg/40229; it has been noted by GNATS.
From: Mark Davies <mark%ecs.vuw.ac.nz@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: David Holland <dholland-pbugs%netbsd.org@localhost>
Subject: Re: pkg/40229: NetBSD pkgsrc/devel/subversion-base - NFS-mounted
repository failures
Date: Wed, 25 Feb 2009 02:12:45 +1300
On Sunday 22 February 2009 David Holland wrote:
> On Fri, Dec 19, 2008 at 09:25:01PM +0000, Eric Gillespie wrote:
> > Until recently, I had nearly 400 users committing to NFS-backed
> > repositories via multiple servers, using 1.5 on the servers and
> > 1.3, 1.4, 1.5, and even SVNKit on the clients. I think you may
> > be having some local trouble. I see that you're using file:///
> > access; I can't discourage that enough, and I doubt you'll hear
> > anything different from the users list...
> For what it's worth, I've just seen the same thing a couple times
> using subversion-base-1.5.5 on NetBSD 5.99.7.
We were seeing this. I've tracked it down to the following:
In subversion/libsvn_subr/io.c (in svn_io_remove_dir2()) there is code to
work around an issue described in this comment
/*
Mac OS X has a bug where if you're readding the contents of a
directory via readdir in a loop, and you remove one of the entries in
the directory and the directory has 338 or more files in it you will
skip over some of the entries in the directory. Needless to say,
this causes problems if you are using this kind of loop inside a
function that is recursively deleting a directory, because when you
get around to removing the directory it will still have something in
it.
Similar problem has been observed on FreeBSD.
See http://subversion.tigris.org/issues/show_bug.cgi?id=1896 for more
discussion and an initial solution.
To work around the problem, we do a rewinddir after we delete all files
and see if there's anything left. We repeat the steps untill there's
nothing left to delete.
This workaround causes issues on Windows where delete's are asynchronous,
however, so we never rewind if we're on Windows (the delete says it is
complete, we rewind, we see the same file and try to delete it again,
we fail.
*/
On NetBSD on an NFS filesystem, when it does the rewinddir and "see if
there's anything left" it sees files remaining (due to NFS dir caching?)
so tries to delete them again and fails as they are already deleted.
I'm currently working around the problem with this patch
--- subversion/libsvn_subr/io.c.orig 2008-10-09 08:28:59.000000000 +1300
+++ subversion/libsvn_subr/io.c
@@ -1839,7 +1839,7 @@ svn_io_remove_dir2(const char *path, svn
{
const char *fullpath, *entry_utf8;
-#ifndef WIN32
+#if 0 /* ndef WIN32 */
need_rewind = TRUE;
#endif
cheers
mark
Home |
Main Index |
Thread Index |
Old Index