Hi all,
Please review the changes in that branch such that
it can be merged to /trunk.
Basically, we replace the shared memory code with
plain file access and keep the revprop caching and
invalidation logic unchanged. Also, we make sure that
writes don't rely on existing buffer / cache contents,
i.e. there are no lost updates. See BRANCH-README
for more details.
The main logic can be found in revprops.c, lines 149-622;
it's probably easiest to read the new code as-is instead
of looking at the diff for that section.
Here the guarantees and limitations of the new implementation:
* No lost updates in revprop file contents even if the
SVN caches should be stale.
* A connection (svn_fs_t) will always see at least all
changes up to and including its own last revprop change.
* A new connection will always see all changes made
up to the point the connection got created.
* On Windows and Unixoids, readers will always see
the latest data if they are on the same machine as the
writing process.
* Depending on OS read cache configuration and if the
repository is shared between machines, open connections
*might* no see revprop updates or might see them delayed
(the open revprop generation file handle may see a stale
OS file buffer).
* Revprop caching may be inefficient if the repository is
shared between machines; again depending on OS config.
-- Stefan^2.
Received on 2014-08-26 17:04:58 CEST