Stefan Fuhrmann <stefanfuhrm...@alice-dsl.de> writes:

> * undo the above-mentioned revs on /trunk

Good.  I was starting to have concerns about other races in the current
code. For example:

  - first process reads generation file N
  - second process writes new revprops
  - first process reads revprops
  - second process writes generation file N+1

This means the cache doesn't have revprops for N but for some n>=N.  I
suppose the system might work with this sort of cache but I'm not sure
it has been considered.  I suppose the reader could loop, rereading the
generation file after reading the revprops file until it sees the same
generation before and after revprops.

Another example:

  - first process reads/caches revprops for generation N
  - second process writes new revprops and gets killed before updating
    the generation file
  - third process reads/caches revprops and gets new revprops plus
    generation N

This means two readers that have different revprops for generation N.
Both of them will believe they have up-to-date values if they reread the
generation file.

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

Reply via email to