Re: [PATCH 2/2] lock_packed_refs(): allow retries when acquiring the packed-refs lock
- From
Michael Haggerty <mhagger@alum.mit.edu>
- Date
- May 2, 2015, 03:47 UTC
- Message-ID
- <554448B6.6080605@alum.mit.edu>
- In-Reply-To
- <5543A621.7010208@kdbg.org>
On 05/01/2015 06:13 PM, Johannes Sixt wrote:
Show 25 quoted lines
> Am 01.05.2015 um 16:52 schrieb Michael Haggerty:
>> +test_expect_success 'retry acquiring packed-refs.lock' '
>> + LOCK=.git/packed-refs.lock &&
>> + >$LOCK &&
>> + test_when_finished "rm -f $LOCK" &&
>> + {
>> + ( sleep 1 ; rm -f $LOCK ) &
>> + } &&
>
> I haven't tested yet, but I think that this will be problematic on
> Windows: a directory cannot be removed if it is the current directory of
> a process. Here, the sub-shell process is alive for a second. If the
> remainder of the test script completes before the process dies, the test
> directory cannot be removed.
>
> How about this:
>
> test_when_finished "wait; rm -f $LOCK" &&
> { sleep 1 & } &&
> ...
>
>> + git -c core.packedrefstimeout=3000 pack-refs --all --prune
>> +'
>> +
>> test_doneThanks for pointing out this problem. Your suggestion seems good. I assume that you didn't intend to omit the "rm -f $LOCK" from the subprocess, because the whole point is for that to happen while "git pack-refs" is running.
I will include your change in v2.
Michael
-- Michael Haggerty mhagger@alum.mit.edu