You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2014/10/19 16:53:45 UTC
svn commit: r1632926 - in /subversion/trunk/subversion: libsvn_fs_fs/fs.h
libsvn_fs_fs/hotcopy.c libsvn_fs_fs/recovery.c libsvn_fs_fs/revprops.c
libsvn_fs_fs/revprops.h tests/cmdline/svnadmin_tests.py
Author: stefan2
Date: Sun Oct 19 14:53:44 2014
New Revision: 1632926
URL: http://svn.apache.org/r1632926
Log:
Remove the SHM-dependent revprop caching logic from /trunk such that we
may remove the named_atomics code entirely. Keep actual cache access
code (although not being called, ATM) to reduce the diff against the
revprop-caching-ng branch.
* subversion/libsvn_fs_fs/fs.h
(fs_fs_data_t): Remove the named_atomics fields.
* subversion/libsvn_fs_fs/revprops.h
(svn_fs_fs__write_revprop_generation_file,
svn_fs_fs__cleanup_revprop_namespace): Remove revprop caching
management API declaration.
* subversion/libsvn_fs_fs/revprops.c
(ATOMIC_REVPROP_GENERATION,
ATOMIC_REVPROP_TIMEOUT,
ATOMIC_REVPROP_NAMESPACE): No longer needed.
(Revprop caching management): Remove doc section.
(read_revprop_generation_file,
svn_fs_fs__write_revprop_generation_file,
ensure_revprop_namespace,
svn_fs_fs__cleanup_revprop_namespace,
ensure_revprop_generation,
ensure_revprop_timeout,
log_revprop_cache_init_warning): Remove revprop caching management code.
(has_revprop_cache): Always return FALSE.
(revprop_generation_fixup_t,
revprop_generation_fixup,
read_revprop_generation,
begin_revprop_change,
end_revprop_change): Remove revprop caching management code.
(read_pack_revprop,
svn_fs_fs__get_revision_proplist,
switch_to_new_revprop,
write_packed_revprop): Remove invocations of the former revprop
caching management functions.
* subversion/libsvn_fs_fs/hotcopy.c
(hotcopy_body): No revprop generation file to take care of anymore.
* subversion/libsvn_fs_fs/recovery.c
(recover_body): No SHM namespace needed for revprop caching anymore.
* subversion/tests/cmdline/svnadmin_tests.py
(check_hotcopy_fsfs_fsx): Remove the check for the SHM-related files.
Modified:
subversion/trunk/subversion/libsvn_fs_fs/fs.h
subversion/trunk/subversion/libsvn_fs_fs/hotcopy.c
subversion/trunk/subversion/libsvn_fs_fs/recovery.c
subversion/trunk/subversion/libsvn_fs_fs/revprops.c
subversion/trunk/subversion/libsvn_fs_fs/revprops.h
subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py
Modified: subversion/trunk/subversion/libsvn_fs_fs/fs.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/fs.h?rev=1632926&r1=1632925&r2=1632926&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/fs.h (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/fs.h Sun Oct 19 14:53:44 2014
@@ -36,7 +36,6 @@
#include "private/svn_fs_private.h"
#include "private/svn_sqlite.h"
#include "private/svn_mutex.h"
-#include "private/svn_named_atomic.h"
#include "id.h"
@@ -359,18 +358,6 @@ typedef struct fs_fs_data_t
rep key (revision/offset) to svn_stringbuf_t. */
svn_cache__t *fulltext_cache;
- /* Access object to the atomics namespace used by revprop caching.
- Will be NULL until the first access. */
- svn_atomic_namespace__t *revprop_namespace;
-
- /* Access object to the revprop "generation". Will be NULL until
- the first access. */
- svn_named_atomic__t *revprop_generation;
-
- /* Access object to the revprop update timeout. Will be NULL until
- the first access. */
- svn_named_atomic__t *revprop_timeout;
-
/* Revision property cache. Maps from (rev,generation) to apr_hash_t. */
svn_cache__t *revprop_cache;
Modified: subversion/trunk/subversion/libsvn_fs_fs/hotcopy.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/hotcopy.c?rev=1632926&r1=1632925&r2=1632926&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/hotcopy.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/hotcopy.c Sun Oct 19 14:53:44 2014
@@ -993,17 +993,6 @@ hotcopy_body(void *baton, apr_pool_t *po
SVN_ERR(svn_io_dir_file_copy(src_fs->path, dst_fs->path,
PATH_TXN_CURRENT, pool));
- /* If a revprop generation file exists in the source filesystem,
- * reset it to zero (since this is on a different path, it will not
- * overlap with data already in cache). Also, clean up stale files
- * used for the named atomics implementation. */
- SVN_ERR(svn_io_check_path(svn_fs_fs__path_revprop_generation(src_fs, pool),
- &kind, pool));
- if (kind == svn_node_file)
- SVN_ERR(svn_fs_fs__write_revprop_generation_file(dst_fs, 0, pool));
-
- SVN_ERR(svn_fs_fs__cleanup_revprop_namespace(dst_fs));
-
return SVN_NO_ERROR;
}
Modified: subversion/trunk/subversion/libsvn_fs_fs/recovery.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/recovery.c?rev=1632926&r1=1632925&r2=1632926&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/recovery.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/recovery.c Sun Oct 19 14:53:44 2014
@@ -345,9 +345,6 @@ recover_body(void *baton, apr_pool_t *po
svn_revnum_t youngest_rev;
svn_node_kind_t youngest_revprops_kind;
- /* Lose potentially corrupted data in temp files */
- SVN_ERR(svn_fs_fs__cleanup_revprop_namespace(fs));
-
/* The admin may have created a plain copy of this repo before attempting
to recover it (hotcopy may or may not work with corrupted repos).
Bump the instance ID. */
Modified: subversion/trunk/subversion/libsvn_fs_fs/revprops.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/revprops.c?rev=1632926&r1=1632925&r2=1632926&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/revprops.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/revprops.c Sun Oct 19 14:53:44 2014
@@ -41,12 +41,6 @@
process got aborted and that we have re-read revprops. */
#define REVPROP_CHANGE_TIMEOUT (10 * 1000000)
-/* The following are names of atomics that will be used to communicate
- * revprop updates across all processes on this machine. */
-#define ATOMIC_REVPROP_GENERATION "rev-prop-generation"
-#define ATOMIC_REVPROP_TIMEOUT "rev-prop-timeout"
-#define ATOMIC_REVPROP_NAMESPACE "rev-prop-atomics"
-
svn_error_t *
svn_fs_fs__upgrade_pack_revprops(svn_fs_t *fs,
svn_fs_upgrade_notify_t notify_func,
@@ -141,401 +135,18 @@ svn_fs_fs__upgrade_cleanup_pack_revprops
return SVN_NO_ERROR;
}
-/* Revprop caching management.
- *
- * Mechanism:
- * ----------
- *
- * Revprop caching needs to be activated and will be deactivated for the
- * respective FS instance if the necessary infrastructure could not be
- * initialized. In deactivated mode, there is almost no runtime overhead
- * associated with revprop caching. As long as no revprops are being read
- * or changed, revprop caching imposes no overhead.
- *
- * When activated, we cache revprops using (revision, generation) pairs
- * as keys with the generation being incremented upon every revprop change.
- * Since the cache is process-local, the generation needs to be tracked
- * for at least as long as the process lives but may be reset afterwards.
- *
- * To track the revprop generation, we use two-layer approach. On the lower
- * level, we use named atomics to have a system-wide consistent value for
- * the current revprop generation. However, those named atomics will only
- * remain valid for as long as at least one process / thread in the system
- * accesses revprops in the respective repository. The underlying shared
- * memory gets cleaned up afterwards.
- *
- * On the second level, we will use a persistent file to track the latest
- * revprop generation. It will be written upon each revprop change but
- * only be read if we are the first process to initialize the named atomics
- * with that value.
- *
- * The overhead for the second and following accesses to revprops is
- * almost zero on most systems.
- *
- *
- * Tech aspects:
- * -------------
- *
- * A problem is that we need to provide a globally available file name to
- * back the SHM implementation on OSes that need it. We can only assume
- * write access to some file within the respective repositories. Because
- * a given server process may access thousands of repositories during its
- * lifetime, keeping the SHM data alive for all of them is also not an
- * option.
- *
- * So, we store the new revprop generation on disk as part of each
- * setrevprop call, i.e. this write will be serialized and the write order
- * be guaranteed by the repository write lock.
- *
- * The only racy situation occurs when the data is being read again by two
- * processes concurrently but in that situation, the first process to
- * finish that procedure is guaranteed to be the only one that initializes
- * the SHM data. Since even writers will first go through that
- * initialization phase, they will never operate on stale data.
- */
-
-/* Read revprop generation as stored on disk for repository FS. The result
- * is returned in *CURRENT. Default to 2 if no such file is available.
- */
-static svn_error_t *
-read_revprop_generation_file(apr_int64_t *current,
- svn_fs_t *fs,
- apr_pool_t *pool)
-{
- svn_error_t *err;
- apr_file_t *file;
- char buf[80];
- apr_size_t len;
- const char *path = svn_fs_fs__path_revprop_generation(fs, pool);
-
- err = svn_io_file_open(&file, path,
- APR_READ | APR_BUFFERED,
- APR_OS_DEFAULT, pool);
- if (err && APR_STATUS_IS_ENOENT(err->apr_err))
- {
- svn_error_clear(err);
- *current = 2;
-
- return SVN_NO_ERROR;
- }
- SVN_ERR(err);
-
- len = sizeof(buf);
- SVN_ERR(svn_io_read_length_line(file, buf, &len, pool));
-
- /* Check that the first line contains only digits. */
- SVN_ERR(svn_fs_fs__check_file_buffer_numeric(buf, 0, path,
- "Revprop Generation", pool));
- SVN_ERR(svn_cstring_atoi64(current, buf));
-
- return svn_io_file_close(file, pool);
-}
-
-/* Write the CURRENT revprop generation to disk for repository FS.
- */
-svn_error_t *
-svn_fs_fs__write_revprop_generation_file(svn_fs_t *fs,
- apr_int64_t current,
- apr_pool_t *pool)
-{
- char buf[SVN_INT64_BUFFER_SIZE];
- apr_size_t len = svn__i64toa(buf, current);
- buf[len] = '\n';
-
- SVN_ERR(svn_io_write_atomic(svn_fs_fs__path_revprop_generation(fs, pool),
- buf, len + 1,
- NULL /* copy_perms */, pool));
-
- return SVN_NO_ERROR;
-}
-
-/* Make sure the revprop_namespace member in FS is set. */
-static svn_error_t *
-ensure_revprop_namespace(svn_fs_t *fs)
-{
- fs_fs_data_t *ffd = fs->fsap_data;
-
- return ffd->revprop_namespace == NULL
- ? svn_atomic_namespace__create(&ffd->revprop_namespace,
- svn_dirent_join(fs->path,
- ATOMIC_REVPROP_NAMESPACE,
- fs->pool),
- fs->pool)
- : SVN_NO_ERROR;
-}
-
-svn_error_t *
-svn_fs_fs__cleanup_revprop_namespace(svn_fs_t *fs)
-{
- const char *name = svn_dirent_join(fs->path,
- ATOMIC_REVPROP_NAMESPACE,
- fs->pool);
- return svn_error_trace(svn_atomic_namespace__cleanup(name, fs->pool));
-}
-
-/* Make sure the revprop_generation member in FS is set and, if necessary,
- * initialized with the latest value stored on disk.
- */
-static svn_error_t *
-ensure_revprop_generation(svn_fs_t *fs, apr_pool_t *pool)
-{
- fs_fs_data_t *ffd = fs->fsap_data;
-
- SVN_ERR(ensure_revprop_namespace(fs));
- if (ffd->revprop_generation == NULL)
- {
- apr_int64_t current;
-
- SVN_ERR(svn_named_atomic__get(&ffd->revprop_generation,
- ffd->revprop_namespace,
- ATOMIC_REVPROP_GENERATION,
- TRUE));
-
- /* If the generation is at 0, we just created a new namespace
- * (it would be at least 2 otherwise). Read the latest generation
- * from disk and if we are the first one to initialize the atomic
- * (i.e. is still 0), set it to the value just gotten.
- */
- SVN_ERR(svn_named_atomic__read(¤t, ffd->revprop_generation));
- if (current == 0)
- {
- SVN_ERR(read_revprop_generation_file(¤t, fs, pool));
- SVN_ERR(svn_named_atomic__cmpxchg(NULL, current, 0,
- ffd->revprop_generation));
- }
- }
-
- return SVN_NO_ERROR;
-}
-
-/* Make sure the revprop_timeout member in FS is set. */
-static svn_error_t *
-ensure_revprop_timeout(svn_fs_t *fs)
-{
- fs_fs_data_t *ffd = fs->fsap_data;
-
- SVN_ERR(ensure_revprop_namespace(fs));
- return ffd->revprop_timeout == NULL
- ? svn_named_atomic__get(&ffd->revprop_timeout,
- ffd->revprop_namespace,
- ATOMIC_REVPROP_TIMEOUT,
- TRUE)
- : SVN_NO_ERROR;
-}
-
-/* Create an error object with the given MESSAGE and pass it to the
- WARNING member of FS. Clears UNDERLYING_ERR. */
-static void
-log_revprop_cache_init_warning(svn_fs_t *fs,
- svn_error_t *underlying_err,
- const char *message,
- apr_pool_t *pool)
-{
- svn_error_t *err = svn_error_createf(
- SVN_ERR_FS_REVPROP_CACHE_INIT_FAILURE,
- underlying_err, message,
- svn_dirent_local_style(fs->path, pool));
-
- if (fs->warning)
- (fs->warning)(fs->warning_baton, err);
-
- svn_error_clear(err);
-}
-
/* Test whether revprop cache and necessary infrastructure are
available in FS. */
static svn_boolean_t
has_revprop_cache(svn_fs_t *fs, apr_pool_t *pool)
{
fs_fs_data_t *ffd = fs->fsap_data;
- svn_error_t *error;
/* is the cache (still) enabled? */
if (ffd->revprop_cache == NULL)
return FALSE;
- /* is it efficient? */
- if (!svn_named_atomic__is_efficient())
- {
- /* access to it would be quite slow
- * -> disable the revprop cache for good
- */
- ffd->revprop_cache = NULL;
- log_revprop_cache_init_warning(fs, NULL,
- "Revprop caching for '%s' disabled"
- " because it would be inefficient.",
- pool);
-
- return FALSE;
- }
-
- /* try to access our SHM-backed infrastructure */
- error = ensure_revprop_generation(fs, pool);
- if (error)
- {
- /* failure -> disable revprop cache for good */
-
- ffd->revprop_cache = NULL;
- log_revprop_cache_init_warning(fs, error,
- "Revprop caching for '%s' disabled "
- "because SHM infrastructure for revprop "
- "caching failed to initialize.",
- pool);
-
- return FALSE;
- }
-
- return TRUE;
-}
-
-/* Baton structure for revprop_generation_fixup. */
-typedef struct revprop_generation_fixup_t
-{
- /* revprop generation to read */
- apr_int64_t *generation;
-
- /* containing the revprop_generation member to query */
- fs_fs_data_t *ffd;
-} revprop_generation_upgrade_t;
-
-/* If the revprop generation has an odd value, it means the original writer
- of the revprop got killed. We don't know whether that process as able
- to change the revprop data but we assume that it was. Therefore, we
- increase the generation in that case to basically invalidate everyone's
- cache content.
- Execute this only while holding the write lock to the repo in baton->FFD.
- */
-static svn_error_t *
-revprop_generation_fixup(void *void_baton,
- apr_pool_t *pool)
-{
- revprop_generation_upgrade_t *baton = void_baton;
- assert(baton->ffd->has_write_lock);
-
- /* Maybe, either the original revprop writer or some other reader has
- already corrected / bumped the revprop generation. Thus, we need
- to read it again. */
- SVN_ERR(svn_named_atomic__read(baton->generation,
- baton->ffd->revprop_generation));
-
- /* Cause everyone to re-read revprops upon their next access, if the
- last revprop write did not complete properly. */
- while (*baton->generation % 2)
- SVN_ERR(svn_named_atomic__add(baton->generation,
- 1,
- baton->ffd->revprop_generation));
-
- return SVN_NO_ERROR;
-}
-
-/* Read the current revprop generation and return it in *GENERATION.
- Also, detect aborted / crashed writers and recover from that.
- Use the access object in FS to set the shared mem values. */
-static svn_error_t *
-read_revprop_generation(apr_int64_t *generation,
- svn_fs_t *fs,
- apr_pool_t *pool)
-{
- apr_int64_t current = 0;
- fs_fs_data_t *ffd = fs->fsap_data;
-
- /* read the current revprop generation number */
- SVN_ERR(ensure_revprop_generation(fs, pool));
- SVN_ERR(svn_named_atomic__read(¤t, ffd->revprop_generation));
-
- /* is an unfinished revprop write under the way? */
- if (current % 2)
- {
- apr_int64_t timeout = 0;
-
- /* read timeout for the write operation */
- SVN_ERR(ensure_revprop_timeout(fs));
- SVN_ERR(svn_named_atomic__read(&timeout, ffd->revprop_timeout));
-
- /* has the writer process been aborted,
- * i.e. has the timeout been reached?
- */
- if (apr_time_now() > timeout)
- {
- revprop_generation_upgrade_t baton;
- baton.generation = ¤t;
- baton.ffd = ffd;
-
- /* Ensure that the original writer process no longer exists by
- * acquiring the write lock to this repository. Then, fix up
- * the revprop generation.
- */
- if (ffd->has_write_lock)
- SVN_ERR(revprop_generation_fixup(&baton, pool));
- else
- SVN_ERR(svn_fs_fs__with_write_lock(fs, revprop_generation_fixup,
- &baton, pool));
- }
- }
-
- /* return the value we just got */
- *generation = current;
- return SVN_NO_ERROR;
-}
-
-/* Set the revprop generation to the next odd number to indicate that
- there is a revprop write process under way. If that times out,
- readers shall recover from that state & re-read revprops.
- Use the access object in FS to set the shared mem value. */
-static svn_error_t *
-begin_revprop_change(svn_fs_t *fs, apr_pool_t *pool)
-{
- apr_int64_t current;
- fs_fs_data_t *ffd = fs->fsap_data;
-
- /* set the timeout for the write operation */
- SVN_ERR(ensure_revprop_timeout(fs));
- SVN_ERR(svn_named_atomic__write(NULL,
- apr_time_now() + REVPROP_CHANGE_TIMEOUT,
- ffd->revprop_timeout));
-
- /* set the revprop generation to an odd value to indicate
- * that a write is in progress
- */
- SVN_ERR(ensure_revprop_generation(fs, pool));
- do
- {
- SVN_ERR(svn_named_atomic__add(¤t,
- 1,
- ffd->revprop_generation));
- }
- while (current % 2 == 0);
-
- return SVN_NO_ERROR;
-}
-
-/* Set the revprop generation to the next even number to indicate that
- a) readers shall re-read revprops, and
- b) the write process has been completed (no recovery required)
- Use the access object in FS to set the shared mem value. */
-static svn_error_t *
-end_revprop_change(svn_fs_t *fs, apr_pool_t *pool)
-{
- apr_int64_t current = 1;
- fs_fs_data_t *ffd = fs->fsap_data;
-
- /* set the revprop generation to an even value to indicate
- * that a write has been completed
- */
- SVN_ERR(ensure_revprop_generation(fs, pool));
- do
- {
- SVN_ERR(svn_named_atomic__add(¤t,
- 1,
- ffd->revprop_generation));
- }
- while (current % 2);
-
- /* Save the latest generation to disk. FS is currently in a "locked"
- * state such that we can be sure the be the only ones to write that
- * file.
- */
- return svn_fs_fs__write_revprop_generation_file(fs, current, pool);
+ return FALSE;
}
/* Container for all data required to access the packed revprop file
@@ -911,14 +522,6 @@ read_pack_revprop(packed_revprops_t **re
file_path,
i + 1 < SVN_FS_FS__RECOVERABLE_RETRY_COUNT,
pool));
-
- /* If we could not find the file, there was a write.
- * So, we should refresh our revprop generation info as well such
- * that others may find data we will put into the cache. They would
- * consider it outdated, otherwise.
- */
- if (missing && has_revprop_cache(fs, pool))
- SVN_ERR(read_revprop_generation(&result->generation, fs, pool));
}
/* the file content should be available now */
@@ -957,22 +560,6 @@ svn_fs_fs__get_revision_proplist(apr_has
/* should they be available at all? */
SVN_ERR(svn_fs_fs__ensure_revision_exists(rev, fs, pool));
- /* Try cache lookup first. */
- if (has_revprop_cache(fs, pool))
- {
- svn_boolean_t is_cached;
- pair_cache_key_t key = { 0 };
-
- SVN_ERR(read_revprop_generation(&generation, fs, pool));
-
- key.revision = rev;
- key.second = generation;
- SVN_ERR(svn_cache__get((void **) proplist_p, &is_cached,
- ffd->revprop_cache, &key, pool));
- if (is_cached)
- return SVN_NO_ERROR;
- }
-
/* if REV had not been packed when we began, try reading it from the
* non-packed shard. If that fails, we will fall through to packed
* shard reads. */
@@ -1058,18 +645,9 @@ switch_to_new_revprop(svn_fs_t *fs,
svn_boolean_t bump_generation,
apr_pool_t *pool)
{
- /* Now, we may actually be replacing revprops. Make sure that all other
- threads and processes will know about this. */
- if (bump_generation)
- SVN_ERR(begin_revprop_change(fs, pool));
-
SVN_ERR(svn_fs_fs__move_into_place(tmp_path, final_path, perms_reference,
pool));
- /* Indicate that the update (if relevant) has been completed. */
- if (bump_generation)
- SVN_ERR(end_revprop_change(fs, pool));
-
/* Clean up temporary files, if necessary. */
if (files_to_delete)
{
@@ -1286,11 +864,6 @@ write_packed_revprop(const char **final_
apr_off_t new_total_size;
int changed_index;
- /* read the current revprop generation. This value will not change
- * while we hold the global write lock to this FS. */
- if (has_revprop_cache(fs, pool))
- SVN_ERR(read_revprop_generation(&generation, fs, pool));
-
/* read contents of the current pack file */
SVN_ERR(read_pack_revprop(&revprops, fs, rev, generation, pool));
Modified: subversion/trunk/subversion/libsvn_fs_fs/revprops.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/revprops.h?rev=1632926&r1=1632925&r2=1632926&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/revprops.h (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/revprops.h Sun Oct 19 14:53:44 2014
@@ -22,17 +22,6 @@
#include "svn_fs.h"
-/* Write the CURRENT revprop generation to disk for repository FS.
- */
-svn_error_t *
-svn_fs_fs__write_revprop_generation_file(svn_fs_t *fs,
- apr_int64_t current,
- apr_pool_t *pool);
-
-/* Make sure the revprop_namespace member in FS is set. */
-svn_error_t *
-svn_fs_fs__cleanup_revprop_namespace(svn_fs_t *fs);
-
/* In the filesystem FS, pack all revprop shards up to min_unpacked_rev.
*
* NOTE: Keep the old non-packed shards around until after the format bump.
Modified: subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py?rev=1632926&r1=1632925&r2=1632926&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py Sun Oct 19 14:53:44 2014
@@ -86,12 +86,6 @@ def check_hotcopy_fsfs_fsx(src, dst):
"source" % src_dirent)
# Compare all files in this directory
for src_file in src_files:
- # Exclude temporary files
- if src_file == 'rev-prop-atomics.shm':
- continue
- if src_file == 'rev-prop-atomics.mutex':
- continue
-
# Ignore auto-created empty lock files as they may or may not
# be present and are neither required by nor do they harm to
# the destination repository.