Checkout Tools
  • last updated 16 mins ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Merge the 1.10-cache-improvements development branch to trunk and remove

the BRANCH-README file. There were no conflicts.

Changes brought by this branch:

- Introduce a NULL cache implementation to unify / simplify cache usage

- Space and runtime efficiency improvements to the recently introduced

full key comparison in membuffer caches.

  1. … 9 more files in changeset.
Add test for accessing membuffer cache with unaligned fixed keys. The

current implementation seems to assume that fixed keys are aligned, so

the test may fail on platforms that don't allow unaligned access.

* subversion/tests/libsvn_subr/cache-test.c

(test_membuffer_unaligned_fixed_keys): New test.

(test_funcs): Add test_membuffer_unaligned_fixed_keys to test list.

Follow-up to r1678927: Extend the test case with additional check.

* subversion/tests/libsvn_subr/cache-test.c

(test_membuffer_unaligned_string_keys): Also check that we get proper

result when providing aligned key.

Add test for accessing membuffer cache with unaligned string keys. The

current implementation doesn't seem have problems with this scenario.

* subversion/tests/libsvn_subr/cache-test.c

(test_membuffer_unaligned_string_keys): New test.

(test_funcs): Add test_membuffer_unaligned_string_keys to test list.

Make it a bit easier to test the memcached support from the cache C tests

and fix a few Windows testsuite runner problems in recent changes.

* build/run_tests.py

(_run_c_test): Pass --memcached-server if available.

* subversion/tests/libsvn_subr/cache-test.c

(create_memcache): New function.

(test_memcache_basic,

test_memcache_long_key): Use create_memcache.

* subversion/tests/svn_test.h

(svn_test_opts_t): Add option.

* subversion/tests/svn_test_main.c

(test_options_e): Add value.

(cl_options): Declare option.

(svn_test_main): Parse option.

* win-tests.py

(): Following up on r1674783, add missing ',' to separate arguments

and parse the right argument names.

  1. … 4 more files in changeset.
Add a function to clear a membuffer cache instance.

That is very useful if you want to replace repositories on disk and must

make sure that there is no residual data from the old repository contents

in your caches.

* subversion/include/private/svn_cache.h

(svn_cache__membuffer_clear): Declare new private API function.

* subversion/libsvn_subr/cache-membuffer.c

(svn_cache__membuffer_clear): Implement it.

* subversion/tests/libsvn_subr/cache-test.c

(test_membuffer_cache_clearing): New test.

(test_funcs): Register new test.

  1. … 2 more files in changeset.
Apply the standard pre-branch whitespace cleanup via

tools/dev/remove-trailing-whitespace.zsh

There should be no functional changes.

* .ycm_extra_conf.py

* build/generator/gen_win.py

* build/generator/gen_win_dependencies.py

* subversion/bindings/javahl/native/EditorProxy.h

* subversion/bindings/javahl/native/StateReporter.cpp

* subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigImpl_Category.cpp

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c

* subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c

* subversion/bindings/swig/ruby/test/test_fs.rb

* subversion/bindings/swig/ruby/test/util.rb

* subversion/bindings/swig/ruby/test/windows_util.rb

* subversion/include/private/svn_fs_fs_private.h

* subversion/include/private/svn_packed_data.h

* subversion/include/private/svn_repos_private.h

* subversion/include/private/svn_sorts_private.h

* subversion/include/private/svn_subr_private.h

* subversion/include/private/svn_wc_private.h

* subversion/include/svn_auth.h

* subversion/include/svn_cache_config.h

* subversion/include/svn_client.h

* subversion/include/svn_cmdline.h

* subversion/include/svn_diff.h

* subversion/include/svn_fs.h

* subversion/include/svn_io.h

* subversion/include/svn_ra.h

* subversion/include/svn_repos.h

* subversion/include/svn_string.h

* subversion/libsvn_client/blame.c

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/commit_util.c

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/diff.c

* subversion/libsvn_client/externals.c

* subversion/libsvn_client/log.c

* subversion/libsvn_client/patch.c

* subversion/libsvn_client/ra.c

* subversion/libsvn_client/update.c

* subversion/libsvn_delta/svndiff.c

* subversion/libsvn_diff/parse-diff.c

* subversion/libsvn_fs/fs-loader.c

* subversion/libsvn_fs_base/lock.c

* subversion/libsvn_fs_fs/cached_data.c

* subversion/libsvn_fs_fs/fs_fs.c

* subversion/libsvn_fs_fs/hotcopy.c

* subversion/libsvn_fs_fs/id.c

* subversion/libsvn_fs_fs/index.c

* subversion/libsvn_fs_fs/index.h

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_fs/low_level.c

* subversion/libsvn_fs_fs/low_level.h

* subversion/libsvn_fs_fs/pack.c

* subversion/libsvn_fs_fs/recovery.c

* subversion/libsvn_fs_fs/rev_file.c

* subversion/libsvn_fs_fs/revprops.c

* subversion/libsvn_fs_fs/revprops.h

* subversion/libsvn_fs_fs/stats.c

* subversion/libsvn_fs_fs/transaction.c

* subversion/libsvn_fs_fs/tree.c

* subversion/libsvn_fs_fs/verify.c

* subversion/libsvn_fs_x/cached_data.c

* subversion/libsvn_fs_x/changes.c

* subversion/libsvn_fs_x/dag.h

* subversion/libsvn_fs_x/fs.h

* subversion/libsvn_fs_x/fs_id.c

* subversion/libsvn_fs_x/fs_x.c

* subversion/libsvn_fs_x/hotcopy.c

* subversion/libsvn_fs_x/hotcopy.h

* subversion/libsvn_fs_x/index.c

* subversion/libsvn_fs_x/index.h

* subversion/libsvn_fs_x/lock.c

* subversion/libsvn_fs_x/lock.h

* subversion/libsvn_fs_x/low_level.c

* subversion/libsvn_fs_x/low_level.h

* subversion/libsvn_fs_x/noderevs.c

* subversion/libsvn_fs_x/pack.c

* subversion/libsvn_fs_x/reps.c

* subversion/libsvn_fs_x/rev_file.c

* subversion/libsvn_fs_x/revprops.c

* subversion/libsvn_fs_x/revprops.h

* subversion/libsvn_fs_x/string_table.c

* subversion/libsvn_fs_x/string_table.h

* subversion/libsvn_fs_x/transaction.c

* subversion/libsvn_fs_x/tree.c

* subversion/libsvn_fs_x/util.c

* subversion/libsvn_fs_x/verify.c

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_ra_serf/ra_serf.h

* subversion/libsvn_ra_serf/serf.c

* subversion/libsvn_ra_serf/update.c

* subversion/libsvn_ra_serf/util.c

* subversion/libsvn_ra_svn/client.c

* subversion/libsvn_ra_svn/marshal.c

* subversion/libsvn_repos/authz_pool.c

* subversion/libsvn_repos/config_pool.c

* subversion/libsvn_repos/dump.c

* subversion/libsvn_repos/fs-wrap.c

* subversion/libsvn_repos/log.c

* subversion/libsvn_subr/bit_array.c

* subversion/libsvn_subr/cache-membuffer.c

* subversion/libsvn_subr/config.c

* subversion/libsvn_subr/dirent_uri.c

* subversion/libsvn_subr/fnv1a.c

* subversion/libsvn_subr/gpg_agent.c

* subversion/libsvn_subr/hash.c

* subversion/libsvn_subr/io.c

* subversion/libsvn_subr/object_pool.c

* subversion/libsvn_subr/packed_data.c

* subversion/libsvn_subr/prefix_string.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_subr/sqlite.c

* subversion/libsvn_subr/subst.c

* subversion/libsvn_subr/sysinfo.c

* subversion/libsvn_subr/types.c

* subversion/libsvn_subr/utf.c

* subversion/libsvn_subr/utf8proc/utf8proc_data.c

* subversion/libsvn_subr/x509info.c

* subversion/libsvn_wc/diff.h

* subversion/libsvn_wc/props.c

* subversion/libsvn_wc/update_editor.c

* subversion/libsvn_wc/wc.h

* subversion/libsvn_wc/wc_db.c

* subversion/libsvn_wc/wc_db.h

* subversion/mod_dav_svn/lock.c

* subversion/mod_dav_svn/mod_dav_svn.c

* subversion/mod_dav_svn/status.c

* subversion/svn/auth-cmd.c

* subversion/svn/info-cmd.c

* subversion/svn/mergeinfo-cmd.c

* subversion/svn/notify.c

* subversion/svn/propget-cmd.c

* subversion/svn/svn.c

* subversion/svnadmin/svnadmin.c

* subversion/svnserve/logger.c

* subversion/svnserve/serve.c

* subversion/svnserve/server.h

* subversion/svnserve/svnserve.c

* subversion/tests/cmdline/blame_tests.py

* subversion/tests/cmdline/checkout_tests.py

* subversion/tests/cmdline/commit_tests.py

* subversion/tests/cmdline/export_tests.py

* subversion/tests/cmdline/externals_tests.py

* subversion/tests/cmdline/lock_tests.py

* subversion/tests/cmdline/merge_tests.py

* subversion/tests/cmdline/merge_tree_conflict_tests.py

* subversion/tests/cmdline/move_tests.py

* subversion/tests/cmdline/redirect_tests.py

* subversion/tests/cmdline/stat_tests.py

* subversion/tests/cmdline/svnadmin_tests.py

* subversion/tests/cmdline/switch_tests.py

* subversion/tests/cmdline/update_tests.py

* subversion/tests/libsvn_client/client-test.c

* subversion/tests/libsvn_client/mtcc-test.c

* subversion/tests/libsvn_fs/fs-test.c

* subversion/tests/libsvn_fs/locks-test.c

* subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test.c

* subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c

* subversion/tests/libsvn_fs_x/fs-x-pack-test.c

* subversion/tests/libsvn_fs_x/string-table-test.c

* subversion/tests/libsvn_ra/ra-test.c

* subversion/tests/libsvn_subr/cache-test.c

* subversion/tests/libsvn_subr/checksum-test.c

* subversion/tests/libsvn_subr/config-test.c

* subversion/tests/libsvn_subr/io-test.c

* subversion/tests/libsvn_subr/packed-data-test.c

* subversion/tests/libsvn_subr/priority-queue-test.c

* subversion/tests/libsvn_subr/sqlite-test.c

* subversion/tests/libsvn_subr/string-test.c

* subversion/tests/libsvn_subr/subst_translate-test.c

* subversion/tests/libsvn_subr/x509-test.c

* subversion/tests/libsvn_wc/op-depth-test.c

* subversion/tests/svn_test_main.c

* tools/dev/benchmarks/RepoPerf/copy_repo.py

* tools/dev/benchmarks/RepoPerf/win_repo_bench.py

* tools/dev/build-svn-deps-win.pl

* tools/dev/fsfs-access-map.c

* tools/dev/po-merge.py

* tools/dev/x509-parser.c

* tools/diff/diff.c

* tools/dist/backport.pl

* tools/dist/backport_tests.py

* tools/hook-scripts/mailer/mailer.py

* tools/server-side/svnpubsub/daemonize.py

* win-tests.py

Remove unneeded whitespace via script.

  1. … 184 more files in changeset.
Fix theoretical error leak returned from cache partial setter callback.

* subversion/libsvn_subr/cache-membuffer.c

(membuffer_cache_set_partial_internal): Do not ignore error from partial

setter callback.

* subversion/tests/libsvn_subr/cache-test.c

(test_membuffer_serializer_error_handling): Extend test to cover another

case.

(raise_error_partial_setter_func): New helper for

test_membuffer_serializer_error_handling()

  1. … 1 more file in changeset.
Do not ignore error returned from 'partial getter' in membuffer cache when

compiled to use simple mutex instead of read/write lock.

* subversion/libsvn_subr/cache-membuffer.c

(unlock_cache): Pass ERR argument to svn_mutex__unlock() call.

* subversion/tests/libsvn_subr/cache-test.c

(test_membuffer_serializer_error_handling): New test to reproduce the

issue.

(raise_error_deserialize_func, raise_error_partial_getter_func): Helpers

for test_membuffer_serializer_error_handling test.

(test_funcs): Add test_membuffer_serializer_error_handling() test to

the list.

  1. … 1 more file in changeset.
Switch cache creation APIs to the two-pool paradigm if they use temporaries.

Update callers, FSFS cache init code in particular.

* subversion/include/private/svn_cache.h

(svn_cache__make_memcache_from_config,

svn_cache__create_membuffer_cache): Add a scratch pool parameter.

* subversion/libsvn_subr/cache-memcache.c

(svn_cache__make_memcache_from_config): Replace the temporary sub-pool

with the new scratch pool.

* subversion/libsvn_subr/cache-membuffer.c

(svn_cache__create_membuffer_cache): Allocate temporaries in the scratch

pool.

* subversion/libsvn_fs_fs/caching.c

(create_cache): Switch to two-pool paradigm and pass them along

to the modified APIs.

(svn_fs_fs__initialize_caches): Provide the scratch pool.

(svn_fs_fs__initialize_txn_caches): Trivially adapt to API change.

* subversion/libsvn_fs_fs/fs_fs.c

(read_config): Provide a scratch pool.

* subversion/libsvn_fs_x/caching.c

(read_config): Same.

(create_cache): Trivially adapt to API change.

* subversion/tests/libsvn_subr/cache-test.c

(test_memcache_basic,

test_membuffer_cache_basic,

test_memcache_long_key): Same.

* tools/server-side/fsfs-stats.c

(read_revisions): Same.

  1. … 7 more files in changeset.
Make the C tests work with the --enable-optimize configure option.

Because the main() function used to be defined in libsvn_test,

the -flto option (which performs rather aggressive link-time

optimizations) would cause the linker to remove all "unreferenced"

static functions ... which includes all the actual tests.

Which this change, main() is now defined in each test driver.

* subversion/tests/svn_test.h

(test_funcs, svn_test_max_threads): Remove external declarations.

(svn_test_main): New prototype for the (existing-but-renamed) test driver.

(SVN_TEST_MAIN): Bolierplate macro that generates a main() implementation.

* subversion/tests/svn_test_main.c

(svn_test_main): Renamed from 'main', and takes two extra parameters,

'max_threads' and 'test_funcs'. Propagates test_funcs to get_array_size,

do_test_num and do_tests_concurrently.

(get_array_size, do_test_num,

test_params_t, test_thread, do_tests_concurrently): Require a test_funcs

parameter. All uses updated.

* subversion/tests/libsvn_client/client-test.c,

subversion/tests/libsvn_client/mtcc-test.c,

subversion/tests/libsvn_delta/random-test.c,

subversion/tests/libsvn_delta/window-test.c,

subversion/tests/libsvn_diff/diff-diff3-test.c,

subversion/tests/libsvn_diff/parse-diff-test.c,

subversion/tests/libsvn_fs/fs-test.c,

subversion/tests/libsvn_fs/locks-test.c,

subversion/tests/libsvn_fs_base/

subversion/tests/libsvn_fs_base/changes-test.c,

subversion/tests/libsvn_fs_base/fs-base-test.c,

subversion/tests/libsvn_fs_base/strings-reps-test.c,

subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c,

subversion/tests/libsvn_fs_x/fs-x-pack-test.c,

subversion/tests/libsvn_fs_x/string-table-test.c,

subversion/tests/libsvn_ra/ra-test.c,

subversion/tests/libsvn_ra_local/ra-local-test.c,

subversion/tests/libsvn_repos/repos-test.c,

subversion/tests/libsvn_subr/auth-test.c,

subversion/tests/libsvn_subr/cache-test.c,

subversion/tests/libsvn_subr/checksum-test.c,

subversion/tests/libsvn_subr/compat-test.c,

subversion/tests/libsvn_subr/config-test.c,

subversion/tests/libsvn_subr/crypto-test.c,

subversion/tests/libsvn_subr/dirent_uri-test.c,

subversion/tests/libsvn_subr/error-code-test.c,

subversion/tests/libsvn_subr/error-test.c,

subversion/tests/libsvn_subr/hashdump-test.c,

subversion/tests/libsvn_subr/io-test.c,

subversion/tests/libsvn_subr/mergeinfo-test.c,

subversion/tests/libsvn_subr/named_atomic-test.c,

subversion/tests/libsvn_subr/opt-test.c,

subversion/tests/libsvn_subr/packed-data-test.c,

subversion/tests/libsvn_subr/path-test.c,

subversion/tests/libsvn_subr/prefix-string-test.c,

subversion/tests/libsvn_subr/priority-queue-test.c,

subversion/tests/libsvn_subr/revision-test.c,

subversion/tests/libsvn_subr/root-pools-test.c,

subversion/tests/libsvn_subr/skel-test.c,

subversion/tests/libsvn_subr/spillbuf-test.c,

subversion/tests/libsvn_subr/sqlite-test.c,

subversion/tests/libsvn_subr/stream-test.c,

subversion/tests/libsvn_subr/string-test.c,

subversion/tests/libsvn_subr/subst_translate-test.c,

subversion/tests/libsvn_subr/time-test.c,

subversion/tests/libsvn_subr/translate-test.c,

subversion/tests/libsvn_subr/utf-test.c,

subversion/tests/libsvn_wc/conflict-data-test.c,

subversion/tests/libsvn_wc/db-test.c,

subversion/tests/libsvn_wc/entries-compat.c,

subversion/tests/libsvn_wc/op-depth-test.c,

subversion/tests/libsvn_wc/pristine-store-test.c,

subversion/tests/libsvn_wc/wc-queries-test.c,

subversion/tests/libsvn_wc/wc-test.c:

(max_threads): Renamed from svn_test_max_threads and made static.

(test_funcs): Made static.

(SVN_TEST_MAIN): Expanded boilerplate main() function.

  1. … 54 more files in changeset.
Add "--parallel" option to our C tests.

Besides shaving off a few seconds off our total test execution time,

parallel execution also stresses our code and the tests themselves

harder. It uncovers things like improperly separated working sets

that make post-failure analysis harder.

Parallel mode is only available with APR 1.3+ and threads enabled.

The option will simply be ignored in other configurations. Further

limitations are cleanups being delayed to after all tests completed

and segfaults not being intercepted.

Some tests can't be executed in parallel. Therefore, we introduce

svn_test_max_threads a simple upper limit to the number of threads

supported that each test must define alongside the test_funcs array.

This patch sets it to "1" in many cases because the tests are so

small that multi-threaded execution is simply not worth it.

* build/run_tests.py

(TestHarness._run_c_test): Pass --parallel option to the individual

test applications.

* subversion/tests/svn_test.h

(svn_test_max_threads): Declare new external setting to be set by

every test application.

* subversion/tests/svn_test_main.c

(parallel): New command line option presence flag.

(parallel_opt,

cl_options): Declare the new "--parallel" option.

(svn_test_add_dir_cleanup): Synchronize shared pool access since

this might be called from multiple

threads at the same time.

(log_results): Result logger function factored out from do_test_num

to be shared between serialized and parallel test

execution code.

(do_test_num): Use that new function.

(test_params_t,

test_thread,

do_tests_concurrently): Threads, their parameter and the thread

starter for thread-pooled test execution.

(main): Handle the new option.

Call concurrent execution when in PARALLEL mode.

* subversion/tests/libsvn_delta/random-test.c

subversion/tests/libsvn_subr/named_atomic-test.c

(svn_test_max_threads): These tests don't support concurrent execution.

* subversion/tests/libsvn_delta/random-test.c

subversion/tests/libsvn_delta/window-test.c

subversion/tests/libsvn_diff/parse-diff-test.c

subversion/tests/libsvn_ra_local/ra-local-test.c

subversion/tests/libsvn_ra/ra-test.c

subversion/tests/libsvn_subr/auth-test.c

subversion/tests/libsvn_subr/cache-test.c

subversion/tests/libsvn_subr/checksum-test.c

subversion/tests/libsvn_subr/compat-test.c

subversion/tests/libsvn_subr/config-test.c

subversion/tests/libsvn_subr/crypto-test.c

subversion/tests/libsvn_subr/dirent_uri-test.c

subversion/tests/libsvn_subr/error-code-test.c

subversion/tests/libsvn_subr/error-test.c

subversion/tests/libsvn_subr/hashdump-test.c

subversion/tests/libsvn_subr/mergeinfo-test.c

subversion/tests/libsvn_subr/named_atomic-test.c

subversion/tests/libsvn_subr/opt-test.c

subversion/tests/libsvn_subr/packed-data-test.c

subversion/tests/libsvn_subr/path-test.c

subversion/tests/libsvn_subr/prefix-string-test.c

subversion/tests/libsvn_subr/priority-queue-test.c

subversion/tests/libsvn_subr/revision-test.c

subversion/tests/libsvn_subr/root-pools-test.c

subversion/tests/libsvn_subr/skel-test.c

subversion/tests/libsvn_subr/spillbuf-test.c

subversion/tests/libsvn_subr/sqlite-test.c

subversion/tests/libsvn_subr/stream-test.c

subversion/tests/libsvn_subr/string-test.c

subversion/tests/libsvn_subr/subst_translate-test.c

subversion/tests/libsvn_subr/time-test.c

subversion/tests/libsvn_subr/utf-test.c

subversion/tests/libsvn_wc/conflict-data-test.c

subversion/tests/libsvn_wc/wc-queries-test.c:

(svn_test_max_threads): These are too small to benefit from multi-threading.

* subversion/tests/libsvn_client/client-test.c

subversion/tests/libsvn_diff/diff-diff3-test.c

subversion/tests/libsvn_fs_base/changes-test.c

subversion/tests/libsvn_fs_base/fs-base-test.c

subversion/tests/libsvn_fs_base/strings-reps-test.c

subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c

subversion/tests/libsvn_fs/fs-test.c

subversion/tests/libsvn_fs/locks-test.c

subversion/tests/libsvn_fs_x/fs-x-pack-test.c

subversion/tests/libsvn_fs_x/string-table-test.c

subversion/tests/libsvn_repos/repos-test.c

subversion/tests/libsvn_subr/io-test.c

subversion/tests/libsvn_subr/translate-test.c

subversion/tests/libsvn_wc/db-test.c

subversion/tests/libsvn_wc/op-depth-test.c

subversion/tests/libsvn_wc/wc-test.c

(svn_test_max_threads): Set concurrency limit to whatever various test

runs suggested as the most efficient value.

* subversion/tests/libsvn_wc/entries-compat.c

subversion/tests/libsvn_wc/pristine-store-test.c

(svn_test_max_threads): Set concurrency limit to "unbounded".

  1. … 54 more files in changeset.
Merge revisions r1442051,1442504,1443803,1444690,1477166,1478055,1490674

from branches/fsfs-format7. These introduce the notion of priorities to our

caches and plus comprise all other caching improvements.

A few conflicts had to be resolved.

  1. … 9 more files in changeset.
Fix issue #4361 (user/group names in authz files are case-insensitive).

Because of the way the original svn_config structure was designed to be

case-preserving but case-insensitive, when using it to parse authz

and group definition files, we had the following problems:

* User- and group names that differed only in case could not be

represented in the authorization configuration.

* The results returned from authorization queries depended,

although predictably, on the order in which the authz entries

appeared in the authz file.

In 1.7.0, we added an option to svn_config to make configuration groups

(hence, repository paths in the authz config) case-sensitive. This change

does the same for option names, which map to group and user names.

* subversion/include/svn_config.h

(svn_config_create2): New, revised from svn_config_create, with additional

flag to treat option names as case-sensitive.

(svn_config_read3): New, revised from svn_config_read2, with same

additional flag as above.

(svn_config_parse): Add flag to treat option names as case-sensitive.

(svn_config_create): Deprecated.

(svn_config_read2): Deprecated; argument "pool" renamde to "result_pool".

(svn_config_read): Argument "pool" renamde to "result_pool".

* subversion/libsvn_subr/config_impl.h (struct svn_config_t): Add new

struct member option_names_case_sensitive.

* subversion/libsvn_subr/config.c: Replace the newly deprecated

svn_config APIs with their revised versions.

(svn_config_create2): Renamed from

svn_config_create and implementation updated to the new spec.

(svn_config_read3): Renamed from svn_config_read; then same as above.

(svn_config_merge): Make sure both sides of the merged config

have the same case-(in)sensitive behaviour.

(svn_config_create_option): Added case-sensitive flag.

* subversion/libsvn_subr/deprecated.c

(svn_config_create, svn_config_read2): Implement deprecated wrappers.

* subversion/libsvn_repos/authz.c

(authz_retrieve_config_repo, authz_retrieve_config,

svn_repos__authz_read, svn_repos_authz_parse): Parse authz and groups config

files with case-sensitive user and group names.

* subversion/libsvn_repos/hooks.c (svn_repos__parse_hooks_env):

Likewise for the hooks environment file.

* subversion/libsvn_fs_fs/fs_fs.c,

subversion/svnserve/serve.c,

subversion/svnserve/svnserve.c,

subversion/tests/libsvn_subr/cache-test.c,

tools/server-side/mod_dontdothat/mod_dontdothat.c: Replace the newly

deprecated svn_config APIs with their revised versions.

No functional changes were made.

  1. … 12 more files in changeset.
Merge forth batch of changes from the 10Gb branch.

Faster membuffer cache lookup and concurrency improvement.

Revisions 1388816,1389044,1389289,1390216

  1. … 9 more files in changeset.
Followup to r1305807, avoid compiler warnings.

* subversion/tests/libsvn_subr/cache-test.c

(serialize_revnum, deserialize_revnum): Change char* to void*.

Offer optional thread-safety for membuffer cache frontends

(actual data container / backend is already thread-safe).

The membuffer cache is now on par with inprocess cache

features.

* subversion/include/private/svn_cache.h

(svn_cache__create_membuffer_cache): add thread_safe parameter

* subversion/libsvn_subr/cache-membuffer.c

(svn_membuffer_cache_t): add optional mutex

(svn_membuffer_cache_get, svn_membuffer_cache_set,

svn_membuffer_cache_get_partial, svn_membuffer_cache_set_partial,

svn_membuffer_cache_is_cachable, svn_membuffer_cache_get_info,

membuffer_cache_vtable): mark as non-sync'ing in docstring

(svn_membuffer_cache_get_synced, svn_membuffer_cache_set_synced,

svn_membuffer_cache_get_partial_synced,

svn_membuffer_cache_set_partial_synced): new sync'ing wrappers

around the non-sync'ing implementations

(membuffer_cache_synced_vtable): new vtable for sync'ing caches

(svn_cache__create_membuffer_cache): depending on thread_safe

parameter, initialize mutex and select proper vtable

* subversion/libsvn_fs_fs/caching.c

(create_cache): adapt caller to provided additional parameter

* subversion/tests/libsvn_subr/cache-test.c

(test_membuffer_cache_basic): dito

  1. … 3 more files in changeset.
Slightly changing the semantics of svn_mutex__init(). If the

enable_mutex parameter has been set, the function will try

to enable the the mutex only if SVN is potentially multi-threaded,

i.e. if APR_HAS_THREADS is set.

Thus, the parameter can simply be set to TRUE, if we would

need synchronization in a multi-threaded environment.

* subversion/libsvn_subr/svn_mutex.c

(svn_mutex__init): no-op if APR_HAS_THREADS isn't set

* subversion/include/private/svn_mutex.h

(svn_mutex__init): update docstring

* subversion/libsvn_subr/dso.c

(svn_dso_initialize2): adapt caller

* subversion/libsvn_fs_base/bdb/env.c

(bdb_init_cb): ditto

* subversion/libsvn_fs/fs-loader.c

(svn_fs_initialize): ditto

* subversion/tests/libsvn_subr/cache-test.c

(test_inprocess_cache_basic): adapt indirect caller

(test_membuffer_cache_basic): ditto

  1. … 5 more files in changeset.
Simplify the code by using APR_HAS_THREADS directly as a parameter

instead of setting a thread_safe intermediate.

* subversion/tests/libsvn_subr/cache-test.c

(test_membuffer_cache_basic): simplify

Follow-up to r1182467:

* subversion/tests/libsvn_subr/cache-test.c

(test_inprocess_cache_basic): Simplify. No functional change.

Follow-up to r1182459: Attempt to fix the Windows build.

* subversion/tests/libsvn_subr/cache-test.c

(test_inprocess_cache_basic): Windows compilers don't seem to be happy

with pre-processor directives inside of macro parameter lists.

So don't put them there.

Fix some test fallout with thread-less APR caused by the svn_mutex merge.

* subversion/libsvn_fs_fs/fs.c

(fs_serialized_init): Don't try to enable mutexes if APR is thread-less.

* subversion/libsvn_fs/fs-loader.c

(svn_fs_initialize): Same.

* subversion/tests/libsvn_subr/cache-test.c

(test_inprocess_cache_basic): Same.

  1. … 2 more files in changeset.
* subversion/tests/libsvn_subr/cache-test.c

(test_membuffer_cache_basic, test_funcs): Indicate to the cache constructor

whether or not we're thread-safe. Makes this test PASS without APR

thread support.

Suggested by: danielsh

* subversion/tests/libsvn_subr/cache-test.c

(test_funcs): Mark test_membuffer_cache_basic XFAIL if APR was compiled

without support for threads. Fixes the following test failure:

subversion/tests/libsvn_subr/cache-test.c:186: (apr_err=70023)

subversion/libsvn_subr/cache-membuffer.c:1095: (apr_err=70023)

svn_tests: E070023: APR doesn't support threads: This function \

has not been implemented on this platform

FAIL: cache-test 4: basic membuffer svn_cache test

Add basic test for membuffer cache.

* subversion/tests/libsvn_subr/cache-test.c

(test_membuffer_cache_basic): New.

(test_funcs): Update test list.

Make the declaration of svn_cache__deserialize_func_t match its

actual usage: the DATA buffer going in is already a local copy and

the function should modify that buffer directly.

* include/private/svn_cache.h

(svn_cache__deserialize_func_t): remove "const"; adapt docstring

* subversion/libsvn_fs_fs/temp_serializer.h

(svn_fs_fs__deserialize_txdelta_window, svn_fs_fs__deserialize_manifest,

svn_fs_fs__deserialize_id, svn_fs_fs__deserialize_node_revision,

svn_fs_fs__deserialize_dir_entries): follow the prototype declaration

* subversion/libsvn_fs_fs/temp_serializer.c

(svn_fs_fs__deserialize_txdelta_window, svn_fs_fs__deserialize_manifest,

svn_fs_fs__deserialize_id, svn_fs_fs__deserialize_node_revision,

svn_fs_fs__deserialize_dir_entries): dito

* subversion/libsvn_fs_fs/dag.h

(svn_fs_fs__dag_deserialize): dito

* subversion/libsvn_fs_fs/dag.c

(svn_fs_fs__dag_deserialize): dito

* subversion/tests/libsvn_subr/cache-test.c

(deserialize_revnum): dito

Suggested by: danielsh

  1. … 5 more files in changeset.
Prepare for the introduction of a generic cache statistics API:

make cache-inprocess caches identifiable.

* subversion/include/private/svn_cache.h

(svn_cache__create_inprocess): add id parameter

* subversion/libsvn_subr/cache-inprocess.c

(inprocess_cache_t): add id member

(svn_cache__create_inprocess): store id parameter

* subversion/libsvn_fs_fs/caching.c

(init_callbacks): new function; factored out from the init function

(svn_fs_fs__initialize_caches): provide IDs / prefixes to all cache types,

call new init sub-function

* subversion/libsvn_fs_fs/tree.c

(make_txn_root): adapt to internal API change

* subversion/tests/libsvn_subr/cache-test.c

(test_inprocess_cache_basic): dito

  1. … 4 more files in changeset.
Merge all changes (r1068724, r1068739) from the

integrate-cache-item-serialization branch.

These patches introduce a very simple, limited purpose

serialization framework and use that to switch the

caching API from data copying to the more generally

applicable (de-)serialization mechanism.

This makes all types of caches usable with all types

of cacheable items.

  1. … 16 more files in changeset.
Follow-up to r1069791. Fix deprecated calls of svn_config_read.

* subversion/libsvn_subr/config.c

(read_all, svn_config_merge):

* subversion/tests/libsvn_subr/cache-test.c

(test_memcache_basic, test_memcache_longkey):

* subversion/tests/libsvn_subr/config-test.c

(test_text_retrieval, test_boolean_retrieval, test_has_section):

* subversion/svnserve/serve.c

(load_configs):

* subversion/libsvn_fs_fs/fs_fs.c

(read_config):

Fixed callers.

Patch by: Arwin Arni <arwin{_AT_}collab.net>

  1. … 4 more files in changeset.
Avoid some "casting away const" warnings.

* subversion/svnserve/cyrus_auth.c

(cyrus_auth_request): Don't cast away "const".

* subversion/tests/libsvn_subr/cache-test.c

(deserialize_revnum): Same.

* subversion/tests/libsvn_subr/target-test.c

(condense_targets_tests_helper): Same.

  1. … 2 more files in changeset.