> -----Original Message-----
> From: Hyrum K. Wright [mailto:hyrum_at_hyrumwright.org]
> Sent: zaterdag 5 september 2009 20:27
> To: svn_at_subversion.tigris.org
> Subject: svn commit: r39153 - in trunk/subversion: libsvn_wc
> Author: hwright
> Date: Sat Sep 5 11:26:48 2009
> New Revision: 39153
> When opening access batons, recursively lock all its subdirectories to
> infinite depth as well. In wc-ng, we don't have the notion of
> opening a database; it's either open or it's not. By making this
> change now,
> we can remove the existing complexity of determining how many levels to
> and where to lock them.
[Third mail on the same subject]
Can you please revert this commit?
I don't think we can ever 'fix' access batons. The access baton model is
We can fix the locking problems by deprecating access batons (what we did),
but we can't handle this by breaking all our compatibility wrappers. We need
a new locking api... and we have to model access batons over them.
Just look at the binding tests. (Ignore the java errors; those are caused by
Almost every binding that using the wc apis, fails now because this changes
the definition of what an access baton is.
We need a new lock implementation, which can be recursive below a directory
or global per wc-db, or anything.
But access batons will have to be allocated per directory like they always
were.. And svn_wc_adm_open(..., adm_related, ...) has to fail when there is
already an access baton for that directory in the shared set.. Or we can
never close access batons (and never free the write lock hold inside...)
If we could have disabled it this way, why did we spend all this time
building a compatibility layer?
We promise to stay compatible, which we were until this patch, via all the
access baton handling Greg created in wc-db (and I debugged through and
through to fight those access batons close crashes over the last month).
I think a simple helper like
svn_wc__lock_recursive(wc_ctx, local_abspath, scratch_pool)
Which can be called instead of virtually all svn_wc__adm_open() calls would
make things easier too.. (Who needs an access baton return argument? ;)
But, I don't think all this is necessary, since as far as I can tell all
access batons are already related to the context now. (Since a few hours
before your commit). Maybe I missed a few places in libsvn_wc, but I expect
that we can now assume a lock without your change.
Received on 2009-09-05 22:28:22 CEST