On Tue, Oct 30, 2012 at 12:11 AM, Philip Martin
<philip.mar...@wandisco.com>wrote:

> Stefan Fuhrmann <stefan.fuhrm...@wandisco.com> writes:
>
> > On Mon, Oct 29, 2012 at 10:46 PM, Philip Martin
> > <philip.mar...@wandisco.com>wrote:
> >
> >> Philip Martin <philip.mar...@wandisco.com> writes:
> >>
> >> > Philip Martin <philip.mar...@wandisco.com> writes:
> >> >
> >> >> I can't see any order in which we can do attach/create that doesn't
> have
> >> >> a similar race.  I think the best solution is a short loop trying
> >> >> attach-create a few times before giving up.
> >> >
> >> > I've committed a loop in r1403463.  That doesn't fix the race but it
> is
> >> > now very unlikely to fail.
> >>
> >
> > The creation code is protected by a repo-global lock/unlock pair.
> > So, in theory, there should be no race condition.
>
> Which lock and where?  Does this lock out other processes?
>

Lines 266 to 292 implement the lock. It first takes out the
process-local and and then the global lock (a repo-local file
lock). L416 acquires the lock in svn_atomic_namespace__create
and L453 releases it.

 >> I've just observed the same failure with the looping code.  I'm not sure
> >> what is wrong.  I suppose there is a window during the creation process
> >> where the file exists, so the create fails, but the memory is not yet
> >> ready, so the attach also fails.  If one process is in this state
> >> another process might loop around 10 times and have both create and
> >> attach fail.  Perhaps a short and/or random delay would help?
> >>
> >
> > It's on my TODO list to identify the root cause of this issue.
>
> I think it must be the window between
>
>      apr_file_open( APR_EXCL )
>
> and
>
>      mmap( MAP_SHARED )
>
> in apr_shm_create.  During that period any other process will see both
> apr_shm_create and apr_shm_attach fail.  But that would imply that your
> process lock isn't working.
>

It is well possible that the locking logic is faulty.
Maybe, there should be a regression test that
tries concurrent initialization.

-- Stefan^2.

-- 
Certified & Supported Apache Subversion Downloads:
*

http://www.wandisco.com/subversion/download
*

Reply via email to