/[Apache-SVN]
ViewVC logotype

Revision 1673170


Jump to revision: Previous Next
Author: rhuijben
Date: Mon Apr 13 12:23:20 2015 UTC (9 years, 7 months ago)
Changed paths: 11
Log Message:
Add an fs layer api that allows obtaining just a boolean indicating whether
properties exist on a node, instead of always obtaining the properties and
checking their count.

This is by far the most expensive operation on 'svn ls -v' in Subversion <=
1.8.x on huge directories as it requires fetching much 'new' data, and has
the risk of trashing the node cache.

r1673153 made new 'svn' clients stop asking for this information for this
scenario but existing clients do ask and so will most likely many third
party clients (confirmed for TortoiseSVN), will keep asking for this
information.

This function introduces the FS api and updates callers, but doesn't provide
optimized implementations yet, so the result is that this doesn't change
runtime behaviour yet, but just moves the implementation into the fs layer.

I hope this patch will be accepted for 1.9.0 to allow further improvements
in later patches, potentially after 1.9.0.

* subversion/include/svn_fs.h
  (svn_fs_node_has_props): New function.

* subversion/libsvn_fs/fs-loader.c
  (svn_fs_node_has_props): New function.

* subversion/libsvn_fs/fs-loader.h
  (root_vtable_t): Add node_has_props.

* subversion/libsvn_fs_base/tree.c
  (base_node_has_props): New function.
  (root_vtable): Add function.

* subversion/libsvn_fs_fs/tree.c
  (fs_node_has_props): New function.
  (root_vtable): Add function.

* subversion/libsvn_fs_x/tree.c
  (x_node_has_props): New function.
  (root_vtable): Add function.

* subversion/libsvn_ra_local/ra_plugin.c
  (svn_ra_local__get_dir): Use new optimized fs call. Rename subpool
    to iterpool.

* subversion/libsvn_repos/repos.c
  (svn_repos_stat): Use new optimized fs call.

* subversion/mod_dav_svn/liveprops.c
  (insert_prop_internal): Use optimized code for svn clients.

* subversion/svnserve/serve.c
  (get_dir): Use optimized fs code.

* subversion/tests/libsvn_ra/ra-test.c
  (ra_list_has_props): New function.
  (test_funcs): Add ra_list_has_props.


Changed paths

Path Details
Directorysubversion/trunk/subversion/include/svn_fs.h modified , text changed
Directorysubversion/trunk/subversion/libsvn_fs/fs-loader.c modified , text changed
Directorysubversion/trunk/subversion/libsvn_fs/fs-loader.h modified , text changed
Directorysubversion/trunk/subversion/libsvn_fs_base/tree.c modified , text changed
Directorysubversion/trunk/subversion/libsvn_fs_fs/tree.c modified , text changed
Directorysubversion/trunk/subversion/libsvn_fs_x/tree.c modified , text changed
Directorysubversion/trunk/subversion/libsvn_ra_local/ra_plugin.c modified , text changed
Directorysubversion/trunk/subversion/libsvn_repos/repos.c modified , text changed
Directorysubversion/trunk/subversion/mod_dav_svn/liveprops.c modified , text changed
Directorysubversion/trunk/subversion/svnserve/serve.c modified , text changed
Directorysubversion/trunk/subversion/tests/libsvn_ra/ra-test.c modified , text changed

infrastructure at apache.org
ViewVC Help
Powered by ViewVC 1.1.26