Philip Martin <philip.martin_at_wandisco.com> wrote on Thu, 04 Aug 2011
14:58:53 +0100:
> Mathias Weinert <wein_at_mccw.de> writes:
>
>> Philip Martin <philip.martin_at_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?
I am willing to test it if someone provided me an svnadmin.exe.
Received on 2011-08-08 07:39:59 CEST