Philip Martin <philip.mar...@wandisco.com> writes:

> Without the cache change_rev_prop_body would return
> SVN_ERR_FS_PROP_BASEVALUE_MISMATCH if the current value doesn't match
> the supplied value. The cache means the current value might be
> out-of-date.

I can demonstrate a race.  Set log to 'xx'

$ svn ps --revprop -r3 svn:log xx file://`pwd`/repo

Start a change to 'yy':

$ gdb -arg svn ps --revprop -r3 svn:log yy file://`pwd`/repo
(gdb) b svn_fs_fs__change_rev_prop
(gdb) r
breakpoint 1

Racing change to 'zz':

$ svn ps --revprop -r3 svn:log zz file://`pwd`/repo

Continue change to 'yy'

(gdb) b change_rev_prop_body
(gdb) c
breakpoint 2
(gbd) n
(gbd) n
7683      if (cb->old_value_p)
(gdb) p cb->old_value_p[0].data
$2 = 0x68bbf8 "xx"

The "atomic" change is being done based on the ood value.

-- 
uberSVN: Apache Subversion Made Easy
http://www.uberSVN.com

Reply via email to