[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [PATCH] Fix race condition in svnsync locking

From: Gavin 'Beau' Baumanis <gavinb_at_thespidernet.com>
Date: Wed, 9 Dec 2009 20:01:48 +1100

Hi Jon,

I have logged your patch into the issue tracker, 3546;
http://subversion.tigris.org/issues/show_bug.cgi?id=3546

Gavin

On 28/11/2009, at 06:53 , Jon Foster wrote:

> Hi,
>
> This fixes the race condition where two svnsync processes can lock
> the repository at the same time (as noticed by Stefan Sperling
> earlier today). I wanted to do this without changing the RA layer,
> so that it can work with older servers.
>
> Since the RA layer doesn't have a test-and-set primitive (other
> than a commit!), some raciness is inevitable. This patch fixes the
> dangerous race, but introduces a much less dangerous race. With
> this patch, two "svnsync" processes trying to lock the repository at
> the same time might both fail to get the lock. To mitigate this,
> both processes will sleep for a random amount of time before
> retrying. This should reduce the chance of them staying in lock-step
> and repeatedly failing. (Hopefully the chance becomes negligible).
>
> This doesn't conflict with my --use-external-locking patch from
> earlier today; they change different parts of the code and have
> different use-cases.
>
> [[[
> Fix race condition that allowed two svnsync processes to get the lock
> at the same time.
>
> * subversion/include/svn_props.h:
> (SVNSYNC_PROP_PRE_LOCK_PREFIX): New define.
>
> * subversion/svnsync/main.c:
> (get_local_host_name, generate_moderately_random_number,
> try_get_lock): New functions.
> (get_lock): Rewritten.
>
> Found by: stsp
> Jon Foster <jon.foster_at_cabot.co.uk>
> (Independently discovered)
> Patch by: Jon Foster <jon.foster_at_cabot.co.uk>
> ]]]
>
> Apologies for the .zip format - my mailserver is blocking outgoing
> .patch files.
>
> Kind regards,
>
> Jon Foster
>
>
> **********************************************************************
> This email and its attachments may be confidential and are intended solely for the use of the individual to whom it is addressed. Any views or opinions expressed are solely those of the author and do not necessarily represent those of Cabot Communications Ltd.
>
> If you are not the intended recipient of this email and its attachments, you must take no action based upon them, nor must you copy or show them to anyone.
>
> Cabot Communications Limited
> Verona House, Filwood Road, Bristol BS16 3RY, UK
> +44 (0) 1179584232
>
> Co. Registered in England number 02817269
>
> Please contact the sender if you believe you have received this email in error.
>
> **********************************************************************
>
>
> ______________________________________________________________________
> This email has been scanned by the MessageLabs Email Security System.
> For more information please visit http://www.messagelabs.com/email
> ______________________________________________________________________<svnsync-two-step-locking.zip>
Received on 2009-12-09 10:02:28 CET

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.