Am 15.04.2012 17:02, schrieb Blair Zajac:
On 04/15/2012 07:49 AM, stef...@apache.org wrote:
Author: stefan2
Date: Sun Apr 15 14:49:21 2012
New Revision: 1326354

URL: http://svn.apache.org/viewvc?rev=1326354&view=rev
Log:
Disable the revprop cache if our sync. mechanisms are too expensive.

* subversion/include/private/svn_named_atomic.h
   (svn_named_atomic__is_efficient): declare new API function
* subversion/libsvn_subr/svn_named_atomic.c
   (SYNCHRONIZE_IS_FAST): new constant, set depending on system /
    compiler capabilities
   (svn_named_atomic__is_efficient): implement new API function
* subversion/libsvn_fs_fs/fs_fs.c
   (has_revprop_cache): disable cache if sync is slow

Modified:
     subversion/trunk/subversion/include/private/svn_named_atomic.h
     subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c
     subversion/trunk/subversion/libsvn_subr/svn_named_atomic.c


+/** Returns #TRUE on platforms that don't need expensive synchronization + * objects to serialize access to named atomics. If this returns #FALSE,
+ * reading from or modifying a #svn_named_atomic__t may be as expensive
+ * as a file system operation.

That is assuming it's a local file system? It still may be faster than getting a file from NFS, which people will host repositories on.

The current implementation has a number of limitations:

* the repository must only be written to by 1.8+ servers
* revprop caching must be enabled on all of them or none
* all 1.8 servers accessing the repository must reside on
  the same machine
* the machine / compiler should provide fast low-level
  synchronization mechanisms

For the time being, I think these are acceptable because
those admins that care enough about the the possible
reduction in I/O will also understand its limitations.

Revprop packing will only be efficient with some sort of
caching mechanism to avoid re-reading large-ish files
over and over again. On the other hand, it may open the
door to less restrictive update checks once we've got a
format bump anyway.

-- Stefan^2.

Reply via email to