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