http/2 first experiences
Matthew Blissett
mblissett at gbif.org
Mon Nov 7 11:48:15 CET 2016
On 04/10/16 16:06, dridi at varni.sh (Dridi Boukelmoune) wrote:
> On Tue, Oct 4, 2016 at 1:31 PM, Tom Anheyer <Tom.Anheyer at berlinonline.de> wrote:
>> Hello,
>>
>> I've setup a little test environment with varnish5 and hitch as TLS
>> offloader. HTTP/2 works for me in FF and Chrome (after upgrading to openssl
>> 1.0.2).
I've done the same — Varnish 5 and Hitch — and we're really pleased to
see the initial HTTP/2 support.
>> 2016 11:26:36 GMT
>> "Incomplete code in
>> h2_rx_rst_stream(), http2/cache_http2_proto.c line 113:
> So apparently you reached one of the things Varnish doesn't implement
> yet, in this case RST frames. Your browser tried to cancel a request
> and close the related streams and Varnish doesn't support it.
>
> Spoiler alert, your browser may crash with DATA, PUSH_PROMISE and
> CONTINUATION frames.
Part of our motivation for HTTP/2 is to serve map tiles, so we'll have
to wait until RST frames are handled — browsers send these when tiles
are scrolled/zoomed off the map before they've loaded.
I've also hit this error, which may be more interesting as it's a failed
assertion:
"Incomplete code in h2_rx_rst_stream(), http2/cache_http2_proto.c line 113:
thread = (cache-worker)
version = varnish-5.0.0 revision 99d036f
ident =
Linux,3.10.0-327.36.3.el7.x86_64,x86_64,-junix,-smalloc,-smalloc,-hcritbit,epoll
Backtrace:
0x4359b6: pan_ic+0x166
0x45bca9: varnishd() [0x45bca9]
0x45d121: h2_new_session+0xd01
0x44d9d1: WRK_Thread+0x481
0x44de3b: pool_thread+0x2b
0x7f79246fedc5: libpthread.so.0(+0x7dc5) [0x7f79246fedc5]
0x7f792442bced: libc.so.6(clone+0x6d) [0x7f792442bced]
req = 0x7f7913096020 {
vxid = 1, transport = H2
step = 0x0,
req_body = R_BODY_INIT,
err_code = 1, err_reason = (null),
restarts = 0, esi_level = 0,
sp = 0x7f7912c0f420 {
fd = 20, vxid = 1,
t_open = 1478512502.492168,
t_idle = 1478512507.188742,
transport = H2 {
streams {
0x00000000 idle
0x00000003 idle
0x00000005 idle
0x00000007 idle
0x00000009 idle
0x0000000b idle
0x00000019 open
0x00000025 open
}
}
client = 192.38.28.2 46264,
},
ws = 0x7f79130961f8 {
id = \"req\",
{s, f, r, e} = {0x7f7913097ff8, +1048, (nil), +57344},
},
http_conn = 0x7f7913096128 {
fd = 20,
doclose = NULL,
ws = 0x7f791b731e38,
{rxbuf_b, rxbuf_e} = {0x7f791b7313f0, 0x7f791b7313fd},
{pipeline_b, pipeline_e} = {(nil), (nil)},
content_length = 0,
body_status = none,
first_byte_timeout = 0.000000,
between_bytes_timeout = 0.000000,
},
http[req] = 0x7f7913096290 {
ws[] = (nil),
hdrs {
},
},
flags = {
},
},
But anyway, the server is accessible, should anyone want to fiddle:
- https://api2.gbif-uat.org/v2/map/demo1.html
- http://api2.gbif-uat.org/v2/map/demo1.html
These are both the same instance of Varnish, the first via Hitch, the
second not. The server is in Copenhagen, Denmark, sharing a 1Gbit/s
connection.
I'm following the mailing lists, and will aim to update the server as
more of HTTP/2 is implemented.
Cheers all,
Matt Blissett
More information about the varnish-misc
mailing list