> Am 04.11.2021 um 13:14 schrieb Ruediger Pluem <rpl...@apache.org>:
>
>
>
> On 11/4/21 10:42 AM, ic...@apache.org wrote:
>> Author: icing
>> Date: Thu Nov 4 09:42:45 2021
>> New Revision: 1894728
>>
>> URL: http://svn.apache.org/viewvc?rev=1894728&view=rev
>> Log:
>> * mod_http2: a regression in v1.15.24 of the modules was fixed that
>> could lead to httpd child processes not being terminated on a
>> graceful reload or when reaching MaxConnectionsPerChild.
>> When unprocessed h2 requests were queued at the time, these could stall.
>> See <https://github.com/icing/mod_h2/issues/212>.
>> [@hansborr, @famzah, Stefan Eissing]
>>
>>
>> Added:
>> httpd/httpd/trunk/changes-entries/h2_graceful_stall.txt
>> Modified:
>> httpd/httpd/trunk/modules/http2/h2_session.c
>> httpd/httpd/trunk/modules/http2/h2_workers.c
>>
>
>> Modified: httpd/httpd/trunk/modules/http2/h2_workers.c
>> URL:
>> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_workers.c?rev=1894728&r1=1894727&r2=1894728&view=diff
>> ==============================================================================
>> --- httpd/httpd/trunk/modules/http2/h2_workers.c (original)
>> +++ httpd/httpd/trunk/modules/http2/h2_workers.c Thu Nov 4 09:42:45 2021
>> @@ -461,8 +461,6 @@ apr_status_t h2_workers_unregister(h2_wo
>> void h2_workers_graceful_shutdown(h2_workers *workers)
>> {
>> workers->shutdown = 1;
>> - workers->min_workers = 1;
>
> Isn't this needed to ensure that all idle workers are shutdown?
I decided to let the HMinWorkers live. There might be many request queued and
still need processing.
> It is used in h2_fifo_term and wake_non_essential_workers.
>
>> workers->max_idle_duration = apr_time_from_sec(1);
>> - h2_fifo_term(workers->mplxs);
>
> Why is this no longer needed? Is wake_non_essential_workers below enough?
The h2_fifo_term was done, so that workers do no longer accept new requests.
This
was the problem in <https://github.com/icing/mod_h2/issues/212>.
The story of the stalling was:
- h2 connection accepts request
- mpm shuts down gracefully
- h2 workers shut down, accept no more requests
- h2 connection tries to process the request it accepted
- no processing, no connection termination until Timeout
In the spirit that "graceful" means "process ongoing requests",
I decided that h2 workers need to stay available.
Kind Regards,
Stefan
>
>> wake_non_essential_workers(workers);
>> }
>>
>
> Regards
>
> RĂ¼diger
>