Mathias Weinert <w...@mccw.de> writes: > Philip Martin <philip.mar...@wandisco.com> wrote: > >> Looking at this again, the call to svn_io_file_open already has a retry >> loop, so the original error seems to imply that either a) the file is in >> use for more than the retry delay or that b) there is some error code >> missing from the retry logic. > > Maybe we should add ERROR_USER_MAPPED_FILE to the retry logic (see > attached patch). > > BTW the problem only occurs when using Windows svnadmin but not when > using cygwin svnadmin (both executed in the same environment) (on > cygwin another retry_loop is used which uses different error codes). > > Unfortunately I can't test the proposed change as I don't have an > environment to build Subversion on Windows (without using cygwin). > > --- subversion/libsvn_subr/io.c.orig 2011-08-04 15:16:10.723195200 +0200 > +++ subversion/libsvn_subr/io.c 2011-08-04 15:18:29.270766000 +0200 > @@ -131,7 +131,8 @@ > #define WIN32_RETRY_LOOP(err, expr) \ > RETRY_LOOP(err, expr, (os_err == ERROR_ACCESS_DENIED \ > || os_err == ERROR_SHARING_VIOLATION \ > - || os_err == ERROR_DIR_NOT_EMPTY), \ > + || os_err == ERROR_DIR_NOT_EMPTY \ > + || os_err == ERROR_USER_MAPPED_FILE), \ > 1) > #else > #define WIN32_RETRY_LOOP(err, expr) ((void)0)
That does look like the right sort of thing. Any of our Windows developers want to take a look? -- uberSVN: Apache Subversion Made Easy http://www.uberSVN.com