Eh, not really into mod_bucketeer and its use cases, but some observations
after a quick scan:
line 99:
rv = ap_pass_brigade(f->next, ctx->bb);
apr_brigade_cleanup(ctx->bb);
line 146:
rv = ap_pass_brigade(f->next, ctx->bb);
if (rv) {
return rv;
}
apr_brigade_cleanup(ctx->bb);
such things only work if an EOS always comes *before* an EOR bucket (case 1)
or of no DATA bucket of any kind follows an EOR.
I think, the code should check for EOR specifically and then get also out
of the way *without* a brigade cleanup afterwards.
As to EOR buckets and HTTP/2, the EOR buckets do not get forwarded to the main
connection. Instead there are H2EOS buckets as indicators that all stream data
has been sent. Destruction of those triggers the shutdown and dealloc of
streams.
This can happen
a) after the request processing has finished and there is an EOR bucket on hold.
b) before the request is done and the EOR has yet to arrive (or the slave
connection
used in the request processing is aborted).
c) On a stream answered without ever generating a request_rec
As to crashes in http2: since 1.10.1 there are no crashes in HTTP/2 known to
me. Stefan Priebe discovered deadlocks which I fixed in 1.10.2 and 1.10.3, but
no more crashes. There is a reported assertion failure in mod_proxy_http2, but
that's it.
Cheers,
Stefan
> Am 26.04.2017 um 01:04 schrieb Jacob Champion <[email protected]>:
>
> On 04/25/2017 04:02 PM, Yann Ylavic wrote:
>> Let me remind this a bit, it's been a long time :)
>> Will have a look at it tomorrow hopefully..
>
> No problem; sorry for springing it on you again after two months of silence.
> :D
>
> --Jacob