subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From phi...@apache.org
Subject svn commit: r1099044 - /subversion/trunk/subversion/libsvn_ra_serf/commit.c
Date Tue, 03 May 2011 13:15:00 GMT
Author: philip
Date: Tue May  3 13:14:59 2011
New Revision: 1099044

URL: http://svn.apache.org/viewvc?rev=1099044&view=rev
Log:
Commits that affect large numbers of files should work on systems that
limit the number of files that can be open simultaneously.

* subversion/libsvn_ra_serf/commit.c
  (apply_textdelta): Don't rely on pool cleanup.
  (close_file): Explicitly close file.

Modified:
    subversion/trunk/subversion/libsvn_ra_serf/commit.c

Modified: subversion/trunk/subversion/libsvn_ra_serf/commit.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/commit.c?rev=1099044&r1=1099043&r2=1099044&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/commit.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/commit.c Tue May  3 13:14:59 2011
@@ -1978,10 +1978,14 @@ apply_textdelta(void *file_baton,
    * writing to a temporary file (ugh). A special svn stream serf bucket
    * that returns EAGAIN until we receive the done call?  But, when
    * would we run through the serf context?  Grr.
+   *
+   * ctx->pool is the same for all files in the commit that send a
+   * textdelta so this file is explicitly closed in close_file to
+   * avoid too many simultaneously open files.
    */
 
   SVN_ERR(svn_io_open_unique_file3(&ctx->svndiff, NULL, NULL,
-                                   svn_io_file_del_on_pool_cleanup,
+                                   svn_io_file_del_on_close,
                                    ctx->pool, ctx->pool));
 
   ctx->stream = svn_stream_create(ctx, pool);
@@ -2140,6 +2144,9 @@ close_file(void *file_baton,
         }
     }
 
+  if (ctx->svndiff)
+    SVN_ERR(svn_io_file_close(ctx->svndiff, pool));
+
   /* If we had any prop changes, push them via PROPPATCH. */
   if (apr_hash_count(ctx->changed_props) ||
       apr_hash_count(ctx->removed_props))



Mime
View raw message