Skip to content

v0.2.4

Choose a tag to compare

@benoitc benoitc released this 06 Jun 07:28
· 10 commits to main since this release
08fd939

Maintenance release: an HTTP/2 write-path optimization, an HTTP/2 disconnect fix, and a runtime concurrency-cap setter. No API change beyond the added setter.

Changed

  • Bump h2 to 0.9.0, which coalesces a response's frames into a single socket write instead of one write per frame. On the loopback benchmark this roughly doubles large HTTP/2 response throughput (100 KiB over TLS: ~28k -> ~66k req/s) and lifts smaller bodies ~7-9%.

Fixed

  • HTTP/2: a client that disconnects mid-response is reported as a normal disconnect ({error, closed}, matching HTTP/1.1's gen_tcp:send) instead of crashing the request. The crash path error-logged the full stacktrace, which carries the response body as a send argument, so a disconnect during a large response pretty-printed the whole body per request - a throughput sink and a log-hygiene leak.

Added

  • livery_req_sup:set_max_concurrent_requests/1 changes the in-flight request cap at runtime. The cap is resolved once at startup and cached in persistent_term rather than read from the application environment on every request.

Full Changelog: https://github.com/benoitc/livery/blob/main/CHANGELOG.md