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 2013/12/02 17:43:57 UTC

svn commit: r1547099 - /subversion/trunk/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c

Author: stefan2
Date: Mon Dec  2 16:43:57 2013
New Revision: 1547099

URL: http://svn.apache.org/r1547099
Log:
Close file handles asap - even in test code.  Windows has trouble deleting
folders with open files in it.

* subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c
  (upgrade_txns_to_log_addressing): Use an iterpool inside our data 
                                    manipulation loops to have more control
                                    over open file handles.

Modified:
    subversion/trunk/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c

Modified: subversion/trunk/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c?rev=1547099&r1=1547098&r2=1547099&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c Mon Dec  2 16:43:57 2013
@@ -948,6 +948,8 @@ upgrade_txns_to_log_addressing(const svn
   int i, k;
   svn_test_opts_t temp_opts;
   svn_fs_root_t *root;
+  apr_pool_t *iterpool = svn_pool_create(pool);
+
   static const char * const paths[SHARD_SIZE][2]
     = {
         { "A/mu",        "A/B/lambda" },
@@ -1001,9 +1003,10 @@ upgrade_txns_to_log_addressing(const svn
         {
           svn_stream_t *stream;
           const char *file_path = paths[i][k];
+          svn_pool_clear(iterpool);
 
-          SVN_ERR(svn_fs_apply_text(&stream, root, file_path, NULL, pool));
-          SVN_ERR(svn_stream_printf(stream, pool,
+          SVN_ERR(svn_fs_apply_text(&stream, root, file_path, NULL, iterpool));
+          SVN_ERR(svn_stream_printf(stream, iterpool,
                                     "This is file %s in txn %d",
                                     file_path, i));
           SVN_ERR(svn_stream_close(stream));
@@ -1023,8 +1026,10 @@ upgrade_txns_to_log_addressing(const svn
     {
       svn_fs_txn_t *txn;
       const char *txn_name = APR_ARRAY_IDX(txn_names, i, const char *);
-      SVN_ERR(svn_fs_open_txn(&txn, fs, txn_name, pool));
-      SVN_ERR(svn_fs_commit_txn2(NULL, &rev, txn, TRUE, pool));
+      svn_pool_clear(iterpool);
+
+      SVN_ERR(svn_fs_open_txn(&txn, fs, txn_name, iterpool));
+      SVN_ERR(svn_fs_commit_txn2(NULL, &rev, txn, TRUE, iterpool));
     }
 
   /* Further changes to fill the shard */
@@ -1038,14 +1043,20 @@ upgrade_txns_to_log_addressing(const svn
       if (rev % SHARD_SIZE == 0)
         break;
 
-      SVN_ERR(svn_fs_begin_txn(&txn, fs, rev, pool));
-      SVN_ERR(svn_fs_txn_root(&root, txn, pool));
+      svn_pool_clear(iterpool);
+
+      SVN_ERR(svn_fs_begin_txn(&txn, fs, rev, iterpool));
+      SVN_ERR(svn_fs_txn_root(&root, txn, iterpool));
       SVN_ERR(svn_test__set_file_contents(root, "iota",
-                                          get_rev_contents(rev + 1, pool),
-                                          pool));
-      SVN_ERR(svn_fs_commit_txn(NULL, &rev, txn, pool));
+                                          get_rev_contents(rev + 1, iterpool),
+                                          iterpool));
+      SVN_ERR(svn_fs_commit_txn(NULL, &rev, txn, iterpool));
     }
 
+  /* Make sure to close all file handles etc. from the last iteration */
+
+  svn_pool_clear(iterpool);
+
   /* Pack repo to verify that old and new shard get packed according to
      their respective addressing mode */
 
@@ -1063,8 +1074,10 @@ upgrade_txns_to_log_addressing(const svn
           svn_string_t *string;
           const char *expected;
 
-          SVN_ERR(svn_fs_file_contents(&stream, root, file_path, pool));
-          SVN_ERR(svn_string_from_stream(&string, stream, pool, pool));
+          svn_pool_clear(iterpool);
+
+          SVN_ERR(svn_fs_file_contents(&stream, root, file_path, iterpool));
+          SVN_ERR(svn_string_from_stream(&string, stream, iterpool, iterpool));
 
           expected = apr_psprintf(pool,"This is file %s in txn %d",
                                   file_path, i);
@@ -1079,8 +1092,9 @@ upgrade_txns_to_log_addressing(const svn
                         NULL, NULL, NULL, NULL, pool));
   for (; rev >= 0; --rev)
     {
-      SVN_ERR(svn_fs_revision_root(&root, fs, rev, pool));
-      SVN_ERR(svn_fs_verify_root(root, pool));
+      svn_pool_clear(iterpool);
+      SVN_ERR(svn_fs_revision_root(&root, fs, rev, iterpool));
+      SVN_ERR(svn_fs_verify_root(root, iterpool));
     }
 
   return SVN_NO_ERROR;