You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by br...@apache.org on 2005/10/09 01:53:54 UTC

svn commit: r307334 - in /httpd/httpd/branches/async-dev/server/mpm/experimental/event: Makefile.in event.c event_filters.c

Author: brianp
Date: Sat Oct  8 16:53:51 2005
New Revision: 307334

URL: http://svn.apache.org/viewcvs?rev=307334&view=rev
Log:
Forward-port of the latest event MPM code from the 2.3-dev trunk into
the async-dev branch

Removed:
    httpd/httpd/branches/async-dev/server/mpm/experimental/event/event_filters.c
Modified:
    httpd/httpd/branches/async-dev/server/mpm/experimental/event/Makefile.in
    httpd/httpd/branches/async-dev/server/mpm/experimental/event/event.c

Modified: httpd/httpd/branches/async-dev/server/mpm/experimental/event/Makefile.in
URL: http://svn.apache.org/viewcvs/httpd/httpd/branches/async-dev/server/mpm/experimental/event/Makefile.in?rev=307334&r1=307333&r2=307334&view=diff
==============================================================================
--- httpd/httpd/branches/async-dev/server/mpm/experimental/event/Makefile.in (original)
+++ httpd/httpd/branches/async-dev/server/mpm/experimental/event/Makefile.in Sat Oct  8 16:53:51 2005
@@ -1,5 +1,5 @@
 
 LTLIBRARY_NAME    = libevent.la
-LTLIBRARY_SOURCES = event.c event_filters.c fdqueue.c pod.c
+LTLIBRARY_SOURCES = event.c fdqueue.c pod.c
 
 include $(top_srcdir)/build/ltlib.mk

Modified: httpd/httpd/branches/async-dev/server/mpm/experimental/event/event.c
URL: http://svn.apache.org/viewcvs/httpd/httpd/branches/async-dev/server/mpm/experimental/event/event.c?rev=307334&r1=307333&r2=307334&view=diff
==============================================================================
--- httpd/httpd/branches/async-dev/server/mpm/experimental/event/event.c (original)
+++ httpd/httpd/branches/async-dev/server/mpm/experimental/event/event.c Sat Oct  8 16:53:51 2005
@@ -336,9 +336,6 @@
     case AP_MPMQ_IS_ASYNC:
         *result = 1;
         return APR_SUCCESS;
-    case AP_MPMQ_CUSTOM_WRITE:
-        *result = 0;
-        return APR_SUCCESS;
     case AP_MPMQ_HARD_LIMIT_DAEMONS:
         *result = server_limit;
         return APR_SUCCESS;
@@ -610,9 +607,8 @@
          * accept() with a socket readability check, like Win32, 
          * and there are measurable delays before the
          * socket is readable due to the first data packet arriving,
-         * it might be better to create the cs on the listener thread,
-         * set the state to CONN_STATE_CHECK_REQUEST_LINE_READABLE,
-         * and give it to the event thread.
+         * it might be better to create the cs on the listener thread
+         * with the state set to CONN_STATE_CHECK_REQUEST_LINE_READABLE
          *
          * FreeBSD users will want to enable the HTTP accept filter 
          * module in their kernel for the highest performance
@@ -663,13 +659,12 @@
         cs->expiration_time = ap_server_conf->keep_alive_timeout + time_now;
         apr_thread_mutex_lock(timeout_mutex);
         APR_RING_INSERT_TAIL(&timeout_head, cs, conn_state_t, timeout_list);
+        apr_thread_mutex_unlock(timeout_mutex);
 
         pt->status = 0;
         /* Add work to pollset. These are always read events */
         rc = apr_pollset_add(event_pollset, &cs->pfd);
 
-        apr_thread_mutex_unlock(timeout_mutex);
-
         if (rc != APR_SUCCESS) {
             ap_log_error(APLOG_MARK, APLOG_ERR, rc, ap_server_conf,
                          "process_socket: apr_pollset_add failure");
@@ -833,16 +828,6 @@
      */
 #define TIMEOUT_FUDGE_FACTOR 100000
 
-    /* POLLSET_SCALE_FACTOR * ap_threads_per_child sets the size of
-     * the pollset.  I've seen 15 connections per active worker thread
-     * running SPECweb99. 
-     *
-     * However, with the newer apr_pollset, this is the number of sockets that
-     * we will return to any *one* call to poll().  Therefore, there is no
-     * reason to make it more than ap_threads_per_child.
-     */
-#define POLLSET_SCALE_FACTOR 1
-
     rc = apr_thread_mutex_create(&timeout_mutex, APR_THREAD_MUTEX_DEFAULT,
                                  tpool);
     if (rc != APR_SUCCESS) {
@@ -857,7 +842,7 @@
 
     /* Create the main pollset */
     rc = apr_pollset_create(&event_pollset,
-                            ap_threads_per_child * POLLSET_SCALE_FACTOR,
+                            ap_threads_per_child,
                             tpool, APR_POLLSET_THREADSAFE);
     if (rc != APR_SUCCESS) {
         ap_log_error(APLOG_MARK, APLOG_ERR, rc, ap_server_conf,
@@ -945,13 +930,12 @@
             }
             else {
                 /* A Listener Socket is ready for an accept() */
-                apr_pool_t *recycled_pool = NULL;
 
                 lr = (ap_listen_rec *) pt->baton;
 
-                ap_pop_pool(&recycled_pool, worker_queue_info);
+                ap_pop_pool(&ptrans, worker_queue_info);
 
-                if (recycled_pool == NULL) {
+                if (ptrans == NULL) {
                     /* create a new transaction pool for each accepted socket */
                     apr_allocator_t *allocator;
 
@@ -967,9 +951,6 @@
                         signal_threads(ST_GRACEFUL);
                         return NULL;
                     }
-                }
-                else {
-                    ptrans = recycled_pool;
                 }
 
                 apr_pool_tag(ptrans, "transaction");