Author: breser
Date: Thu Mar 28 21:30:14 2013
New Revision: 1462310

URL: http://svn.apache.org/r1462310
Log:
Reintegrate the 1.6.x-r1443929 branch:

 * r1443929
   Introduce a subpool.
   Justifcation:
     Better server memory use.
   Branch:
     ^/subversion/branches/1.6.x-r1443929
   Votes:
     +1: philip, stefan2, breser

Modified:
    subversion/branches/1.6.x/   (props changed)
    subversion/branches/1.6.x/STATUS
    subversion/branches/1.6.x/subversion/mod_dav_svn/deadprops.c

Propchange: subversion/branches/1.6.x/
------------------------------------------------------------------------------
  Merged /subversion/branches/1.6.x-r1443929:r1443951-1462309
  Merged /subversion/trunk:r1443929

Modified: subversion/branches/1.6.x/STATUS
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.6.x/STATUS?rev=1462310&r1=1462309&r2=1462310&view=diff
==============================================================================
--- subversion/branches/1.6.x/STATUS (original)
+++ subversion/branches/1.6.x/STATUS Thu Mar 28 21:30:14 2013
@@ -84,15 +84,6 @@ Veto-blocked changes:
 Approved changes:
 =================
 
- * r1443929
-   Introduce a subpool.
-   Justifcation:
-     Better server memory use.
-   Branch:
-     ^/subversion/branches/1.6.x-r1443929
-   Votes:
-     +1: philip, stefan2, breser
-
  * r947833
    Remove deadprops rollback code.
    Justification:

Modified: subversion/branches/1.6.x/subversion/mod_dav_svn/deadprops.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/mod_dav_svn/deadprops.c?rev=1462310&r1=1462309&r2=1462310&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/mod_dav_svn/deadprops.c (original)
+++ subversion/branches/1.6.x/subversion/mod_dav_svn/deadprops.c Thu Mar 28 
21:30:14 2013
@@ -134,6 +134,7 @@ save_value(dav_db *db, const dav_prop_na
 {
   const char *propname;
   svn_error_t *serr;
+  apr_pool_t *subpool;
 
   /* get the repos-local name */
   get_repos_propname(db, name, &propname);
@@ -151,10 +152,14 @@ save_value(dav_db *db, const dav_prop_na
     }
 
   /* Working Baseline or Working (Version) Resource */
+
+  /* A subpool to cope with mod_dav making multiple calls, e.g. during
+     PROPPATCH with multiple values. */
+  subpool = svn_pool_create(db->resource->pool);
   if (db->resource->baselined)
     if (db->resource->working)
       serr = svn_repos_fs_change_txn_prop(db->resource->info->root.txn,
-                                          propname, value, db->resource->pool);
+                                          propname, value, subpool);
     else
       {
         /* ### VIOLATING deltaV: you can't proppatch a baseline, it's
@@ -168,19 +173,21 @@ save_value(dav_db *db, const dav_prop_na
            propname, value, TRUE, TRUE,
            db->authz_read_func,
            db->authz_read_baton,
-           db->resource->pool);
+           subpool);
 
         /* Tell the logging subsystem about the revprop change. */
         dav_svn__operational_log(db->resource->info,
                                  svn_log__change_rev_prop(
                                               db->resource->info->root.rev,
                                               propname,
-                                              db->resource->pool));
+                                              subpool));
       }
   else
     serr = svn_repos_fs_change_node_prop(db->resource->info->root.root,
                                          get_repos_path(db->resource->info),
-                                         propname, value, db->resource->pool);
+                                         propname, value, subpool);
+  svn_pool_destroy(subpool);
+
   if (serr != NULL)
     return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
                                 NULL,
@@ -395,6 +402,7 @@ db_remove(dav_db *db, const dav_prop_nam
 {
   svn_error_t *serr;
   const char *propname;
+  apr_pool_t *subpool;
 
   /* get the repos-local name */
   get_repos_propname(db, name, &propname);
@@ -403,6 +411,10 @@ db_remove(dav_db *db, const dav_prop_nam
   if (propname == NULL)
     return NULL;
 
+  /* A subpool to cope with mod_dav making multiple calls, e.g. during
+     PROPPATCH with multiple values. */
+  subpool = svn_pool_create(db->resource->pool);
+
   /* Working Baseline or Working (Version) Resource */
   if (db->resource->baselined)
     if (db->resource->working)
@@ -419,11 +431,12 @@ db_remove(dav_db *db, const dav_prop_nam
                                            propname, NULL, TRUE, TRUE,
                                            db->authz_read_func,
                                            db->authz_read_baton,
-                                           db->resource->pool);
+                                           subpool);
   else
     serr = svn_repos_fs_change_node_prop(db->resource->info->root.root,
                                          get_repos_path(db->resource->info),
-                                         propname, NULL, db->resource->pool);
+                                         propname, NULL, subpool);
+  svn_pool_destroy(subpool);
   if (serr != NULL)
     return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
                                 "could not remove a property",


Reply via email to