]> git.sur5r.net Git - openldap/commitdiff
ITS#2389 - stop reading requests on a conn if it has more than
authorHoward Chu <hyc@openldap.org>
Thu, 20 Mar 2003 12:40:11 +0000 (12:40 +0000)
committerHoward Chu <hyc@openldap.org>
Thu, 20 Mar 2003 12:40:11 +0000 (12:40 +0000)
connection_pool_max/2 operations already executing. May want to tune
this to a higher value, e.g. connection_pool_max - XX, etc. Fix in
result.c throttles the connection too late, all threads are already
consumed by the time the send buffer blocks.

servers/slapd/connection.c

index 005496fdd900e41143023b40ebf231bf92e066cb..3dcadbc58b5ec222520381a0f763db074b7ff1fc 100644 (file)
@@ -1493,6 +1493,15 @@ connection_input(
 
        } else {
                conn->c_n_ops_executing++;
+               /* Don't allow any single conn to soak up all of the
+                * available threads
+                */
+               if (conn->c_n_ops_executing > connection_pool_max/2) {
+                       ber_socket_t    sd;
+
+                       ber_sockbuf_ctrl( conn->c_sb, LBER_SB_OPT_GET_FD, &sd );
+                       slapd_clr_read( sd, 0 );
+               }
                connection_op_activate( conn, op );
        }