On 6/17/22 11:24 AM, icing@apache.org wrote:
> Author: icing
> Date: Fri Jun 17 09:24:57 2022
> New Revision: 1902005
>
> URL: http://svn.apache.org/viewvc?rev=1902005&view=rev
> Log:
> *) mod_http2: new implementation of h2 worker pool.
> - O(1) cost at registration of connection processing producers
> - no limit on registered producers
> - join of ongoing work on unregister
> - callbacks to unlink dependencies into other h2 code
> - memory cleanup on workers deactivation (on idle timeouts)
> - idle_limit as apr_time_t instead of seconds
>
>
> Modified:
> httpd/httpd/trunk/modules/http2/h2_c1.c
> httpd/httpd/trunk/modules/http2/h2_config.c
> httpd/httpd/trunk/modules/http2/h2_config.h
> httpd/httpd/trunk/modules/http2/h2_mplx.c
> httpd/httpd/trunk/modules/http2/h2_mplx.h
> httpd/httpd/trunk/modules/http2/h2_workers.c
> httpd/httpd/trunk/modules/http2/h2_workers.h
> httpd/httpd/trunk/modules/http2/mod_http2.c
>
> Modified: httpd/httpd/trunk/modules/http2/h2_c1.c
> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_c1.c?rev=1902005&r1=1902004&r2=1902005&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/modules/http2/h2_c1.c (original)
> +++ httpd/httpd/trunk/modules/http2/h2_c1.c Fri Jun 17 09:24:57 2022
> @@ -56,11 +56,8 @@ apr_status_t h2_c1_child_init(apr_pool_t
> {
> apr_status_t status = APR_SUCCESS;
> int minw, maxw;
> - int max_threads_per_child = 0;
> - int idle_secs = 0;
> + apr_time_t idle_limit;
>
> - ap_mpm_query(AP_MPMQ_MAX_THREADS, &max_threads_per_child);
> -
> status = ap_mpm_query(AP_MPMQ_IS_ASYNC, &async_mpm);
> if (status != APR_SUCCESS) {
> /* some MPMs do not implemnent this */
> @@ -70,12 +67,8 @@ apr_status_t h2_c1_child_init(apr_pool_t
>
> h2_config_init(pool);
>
> - h2_get_num_workers(s, &minw, &maxw);
> - idle_secs = h2_config_sgeti(s, H2_CONF_MAX_WORKER_IDLE_SECS);
> - ap_log_error(APLOG_MARK, APLOG_TRACE3, 0, s,
> - "h2_workers: min=%d max=%d, mthrpchild=%d, idle_secs=%d",
> - minw, maxw, max_threads_per_child, idle_secs);
> - workers = h2_workers_create(s, pool, minw, maxw, idle_secs);
> + h2_get_workers_config(s, &minw, &maxw, &idle_limit);
> + workers = h2_workers_create(s, pool, maxw, minw, idle_limit);
Shouldn't that be
workers = h2_workers_create(s, pool, minw, maxw, idle_limit);
instead?
>
> h2_c_logio_add_bytes_in = APR_RETRIEVE_OPTIONAL_FN(ap_logio_add_bytes_in);
> h2_c_logio_add_bytes_out = APR_RETRIEVE_OPTIONAL_FN(ap_logio_add_bytes_out);
>
Regards
Rüdiger
> Author: icing
> Date: Fri Jun 17 09:24:57 2022
> New Revision: 1902005
>
> URL: http://svn.apache.org/viewvc?rev=1902005&view=rev
> Log:
> *) mod_http2: new implementation of h2 worker pool.
> - O(1) cost at registration of connection processing producers
> - no limit on registered producers
> - join of ongoing work on unregister
> - callbacks to unlink dependencies into other h2 code
> - memory cleanup on workers deactivation (on idle timeouts)
> - idle_limit as apr_time_t instead of seconds
>
>
> Modified:
> httpd/httpd/trunk/modules/http2/h2_c1.c
> httpd/httpd/trunk/modules/http2/h2_config.c
> httpd/httpd/trunk/modules/http2/h2_config.h
> httpd/httpd/trunk/modules/http2/h2_mplx.c
> httpd/httpd/trunk/modules/http2/h2_mplx.h
> httpd/httpd/trunk/modules/http2/h2_workers.c
> httpd/httpd/trunk/modules/http2/h2_workers.h
> httpd/httpd/trunk/modules/http2/mod_http2.c
>
> Modified: httpd/httpd/trunk/modules/http2/h2_c1.c
> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_c1.c?rev=1902005&r1=1902004&r2=1902005&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/modules/http2/h2_c1.c (original)
> +++ httpd/httpd/trunk/modules/http2/h2_c1.c Fri Jun 17 09:24:57 2022
> @@ -56,11 +56,8 @@ apr_status_t h2_c1_child_init(apr_pool_t
> {
> apr_status_t status = APR_SUCCESS;
> int minw, maxw;
> - int max_threads_per_child = 0;
> - int idle_secs = 0;
> + apr_time_t idle_limit;
>
> - ap_mpm_query(AP_MPMQ_MAX_THREADS, &max_threads_per_child);
> -
> status = ap_mpm_query(AP_MPMQ_IS_ASYNC, &async_mpm);
> if (status != APR_SUCCESS) {
> /* some MPMs do not implemnent this */
> @@ -70,12 +67,8 @@ apr_status_t h2_c1_child_init(apr_pool_t
>
> h2_config_init(pool);
>
> - h2_get_num_workers(s, &minw, &maxw);
> - idle_secs = h2_config_sgeti(s, H2_CONF_MAX_WORKER_IDLE_SECS);
> - ap_log_error(APLOG_MARK, APLOG_TRACE3, 0, s,
> - "h2_workers: min=%d max=%d, mthrpchild=%d, idle_secs=%d",
> - minw, maxw, max_threads_per_child, idle_secs);
> - workers = h2_workers_create(s, pool, minw, maxw, idle_secs);
> + h2_get_workers_config(s, &minw, &maxw, &idle_limit);
> + workers = h2_workers_create(s, pool, maxw, minw, idle_limit);
Shouldn't that be
workers = h2_workers_create(s, pool, minw, maxw, idle_limit);
instead?
>
> h2_c_logio_add_bytes_in = APR_RETRIEVE_OPTIONAL_FN(ap_logio_add_bytes_in);
> h2_c_logio_add_bytes_out = APR_RETRIEVE_OPTIONAL_FN(ap_logio_add_bytes_out);
>
Regards
Rüdiger