]> granicus.if.org Git - apache/commitdiff
Merge r1588806 from trunk:
authorEric Covener <covener@apache.org>
Thu, 5 Jul 2018 19:45:14 +0000 (19:45 +0000)
committerEric Covener <covener@apache.org>
Thu, 5 Jul 2018 19:45:14 +0000 (19:45 +0000)
r1494157 from eventopt for event, per sf's review comments.

use a subpool of pchild since skiplist allocations will
happen across threads and are only protected from
other skiplist operations.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1835179 13f79535-47bb-0310-9956-ffa450edef68

STATUS
server/mpm/event/event.c

diff --git a/STATUS b/STATUS
index 8f8343f46d1f54fe4a8daea99960347d820010c0..8a0286330205f9a01707560a980b28f8491a8bd9 100644 (file)
--- a/STATUS
+++ b/STATUS
@@ -124,15 +124,6 @@ RELEASE SHOWSTOPPERS:
 PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
   [ start all new proposals below, under PATCHES PROPOSED. ]
 
-  *) event: based on the commit log ("use a subpool of pchild since skiplist
-     allocations will happen across threads and are only protected from
-     other skiplist operations.", per sf's review comments), it sounds like this
-     should be backported.
-     trunk patch: http://svn.apache.org/r1588806
-     2.4.x patch: http://home.apache.org/~jailletc36/backport_1588806.patch
-     +1: ylavic, jim, rpluem
-
-
 PATCHES PROPOSED TO BACKPORT FROM TRUNK:
   [ New proposals should be added at the end of the list ]
 
index 31fa04af0295ac1c5ff1cd80a9f2a92f3394f2c0..f07b757ab934d2ed196252a617922894b39de41d 100644 (file)
@@ -2431,6 +2431,7 @@ static void child_main(int child_num_arg, int child_bucket)
     apr_threadattr_t *thread_attr;
     apr_thread_t *start_thread_id;
     int i;
+    apr_pool_t *pskip;
 
     /* for benefit of any hooks that run as this child initializes */
     retained->mpm->mpm_state = AP_MPMQ_STARTING;
@@ -2458,7 +2459,8 @@ static void child_main(int child_num_arg, int child_bucket)
 
     apr_thread_mutex_create(&g_timer_skiplist_mtx, APR_THREAD_MUTEX_DEFAULT, pchild);
     APR_RING_INIT(&timer_free_ring, timer_event_t, link);
-    apr_skiplist_init(&timer_skiplist, pchild);
+    apr_pool_create(&pskip, pchild);
+    apr_skiplist_init(&timer_skiplist, pskip);
     apr_skiplist_set_compare(timer_skiplist, timer_comp, timer_comp);
 
     /* Just use the standard apr_setup_signal_thread to block all signals