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.