git.net

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: http2 connection keepalive broken



> Am 30.04.2018 um 12:00 schrieb Yann Ylavic <ylavic.dev@xxxxxxxxx>:
> 
> On Mon, Apr 30, 2018 at 9:28 AM, Stefan Eissing <stefan.eissing@xxxxxxxxxxxxx
>> wrote:
>> 
>> with the change http://svn.apache.org/r1819214 the keepalive handling
>> in HTTP/2 was broken, as reported here
>> 
>> https://github.com/icing/mod_h2/issues/160
> 
> Oh crap, I thougth that the h2 connection was over at this point (with
> its own keepalive handling regardless of MPM).
> Sorry about that.

> 
>> 
>> If the mpm_event connection state handling is not suitable to
>> honoring a keepalive setting, we need to fix this. Keeping idle
>> connections parked in fdqueue without occupying a thread seems to be
>> one of event's advantages. mod_http2 did enable this by keeping the
>> connection in CONN_STATE_WRITE_COMPLETION. The change places it in
>> CONN_STATE_LINGER which means it is closed after 1 second, always.
>> 
>> Since you know event's connection state handling much better than me:
>> what can we do to fix this?
> 
> There nothing wrong with returning CONN_STATE_WRITE_COMPLETION here
> like before, CONN_STATE_HANDLER is wrong though.
> So the previous code with s/CONN_STATE_HANDLER/CONN_STATE_LINGER/
> should restore the behaviour I think.

Will give it a try. However, I had already keepalive tests in the http2 
test suite, but those do not fail. So, mpm_event's behaviour on when 
it ditches idle connections is not really clear to me and other tests I 
do not know of.

Basically, I am a bit frustrated by mpm_event and its non-documentation.
Maybe I missed the documents that explain how its different states actually work?

-Stefan