Hi,

HAProxy 3.2-dev6 was released on 2025/02/19. It added 51 new commits
after version 3.2-dev5.

This release fixed 17 bugs (all already described in the 3.1.4 announce).
In addition, it brought a few updates:

- Threads: the lock debugger now shows waiting times per bucket of 1ns to
  1s. This allows to better focus on areas that show long tail wait times
  and even figure more suitable solutions.

- H2: a pure Lua-based H2 framing decoder was added to dev/h2. It's
  convenient to observe frame exchanged between two sides through a TCP
  proxy and helped analyze certain reports or observe some behaviors. It
  makes use of the Lua filters which is rather easy to use for such tools,
  so let's hope it will spark ideas to implement other analyzers in the
  future :-)

- leastconn: the algorithm uses more locking than other ones because a
  server has to be moved once it gets a new connection and once one is
  released, so it's more sensitive to thread contention under high loads.
  It turns out that it does not need to be more accurate than the number
  of threads under extreme contention, so now we're only trying to move
  it back to its position upon release otherwise we do it asynchronously.
  This has tremendously improved the performance (+60% on x86 with 48
  threads, and +260% on ARM with 64 threads), and no divergence nor bad
  distribution could be measured. Those running on leastconn should observe
  a lower peak CPU usage or peaks happening less often.

- the frontends now support a "crt" frontend that uses the same format as
  in crt-lists and that is common to all "bind" lines in the frontend. This
  has several purposes: first, make it easier to deal with a few tens of
  certificates without necessarily having to manage extra files. Second,
  it simplifies the declaration of sections featuring H1+H2+H3 that need
  multiple "bind" lines. Later it will be possible to specific on each
  bind line which set of crt it's going to use, but that's already a nice
  first step which will allow many of us to clean up their configs.

- some QUIC mux internal architecture cleanups for better factorization

- "show ssl cert <crt>" now displays all the file names associated with
  that certificate entry, not just the main one.

- a few doc, regtest and CI updates

This will stabilize the situation for those who tested dev5 and had to
revert consecutive to the APPCTX error on reload.

Please note, I've noticed a few old sessions (several days) on the
haproxy.org server running on 3.2-dev5, all accessing the cache with
compression. Not sure yet what caused them in dev5, we'll debug this.
I'm not worried for 0.00157% sessions leaking, it's just that it proves
we have a bug that we'll need to find :-)  Those upgrading from dev5,
just pay attention to your previous process to check if they eventually
quit. Before restarting, it could be worth checking if you also have any:

  $ socat /path/to/socket - <<< "show sess" | grep -m5 -o 'age=[0-9mhd]*'

The ages should be reasonably small if everything works well. Otherwise
you might possibly have to manually kill the old process after the reload
if you don't have the "hard-stop-after" directive.

Please find the usual URLs below :
   Site index       : https://www.haproxy.org/
   Documentation    : https://docs.haproxy.org/
   Wiki             : https://github.com/haproxy/wiki/wiki
   Discourse        : https://discourse.haproxy.org/
   Slack channel    : https://slack.haproxy.org/
   Issue tracker    : https://github.com/haproxy/haproxy/issues
   Sources          : https://www.haproxy.org/download/3.2/src/
   Git repository   : https://git.haproxy.org/git/haproxy.git/
   Git Web browsing : https://git.haproxy.org/?p=haproxy.git
   Changelog        : https://www.haproxy.org/download/3.2/src/CHANGELOG
   Dataplane API    : 
https://github.com/haproxytech/dataplaneapi/releases/latest
   Pending bugs     : https://www.haproxy.org/l/pending-bugs
   Reviewed bugs    : https://www.haproxy.org/l/reviewed-bugs
   Code reports     : https://www.haproxy.org/l/code-reports
   Latest builds    : https://www.haproxy.org/l/dev-packages

Willy
---
Complete changelog :
Amaury Denoyelle (11):
      BUG/MINOR: quic: reserve length field for long header encoding
      BUG/MINOR: quic: fix CRYPTO payload size calcul for encoding
      MINOR: quic: simplify length calculation for STREAM/CRYPTO frames
      MINOR: quic: refactor STREAM encoding and splitting
      MINOR: quic: refactor CRYPTO encoding and splitting
      MINOR: quic: support frame type as a varint
      BUG/MINOR: quic: prevent crash on conn access after MUX init failure
      BUG/MINOR: mux-quic: prevent crash after MUX init failure
      MINOR: mux-quic: define a QCC application state member
      MINOR: mux-quic/h3: emit SETTINGS via MUX tasklet handler
      MINOR: mux-quic/h3: support temporary blocking on control stream sending

Christopher Faulet (7):
      BUG/MEDIUM: cli: Be sure to drop all input data in END state
      BUG/MINOR: cli: Wait for the last ACK when FDs are xferred from the old 
worker
      BUG/MEDIUM: filters: Handle filters registered on data with no payload 
callback
      BUG/MINOR: fcgi: Don't set the status to 302 if it is already set
      REGTESTS: Fix truncated.vtc to send 0-CRLF
      BUG/MINOR: mux-h2: Properly handle full or truncated HTX messages on shut
      Revert "REGTESTS: stop using truncated.vtc on freebsd"

William Lallemand (19):
      BUG/MINOR: mworker: section ignored in discovery after a 
post_section_parser
      BUG/MINOR: mworker: post_section_parser for the last section in discovery
      CLEANUP: mworker: "program" section does not have a post_section_parser 
anymore
      MEDIUM: initcall: allow to register mutiple post_section_parser per 
section
      CI: cirrus-ci: bump FreeBSD image to 14-2
      DOC: initcall: name correctly REGISTER_CONFIG_POST_SECTION()
      REGTESTS: stop using truncated.vtc on freebsd
      BUG/MINOR: ssl/cli: "show ssl crt-list" lacks client-sigals
      BUG/MINOR: ssl/cli: "show ssl crt-list" lacks sigals
      MINOR: ssl/cli: display more filenames in 'show ssl cert'
      MINOR: ssl: store the filenames resulting from a lookup in ckch_conf
      MINOR: startup: allow hap_register_feature() to enable a feature in the 
list
      BUG/MINOR: startup: leave at first post_section_parser which fails
      BUG/MINOR: startup: hap_register_feature() fix for partial feature name
      MINOR: ssl/crtlist: split the ckch_conf loading from the crtlist line 
parsing
      MINOR: ssl/crtlist: handle crt_path == cc->crt in crtlist_load_crt()
      MINOR: ssl/ckch: return from ckch_conf_clean() when conf is NULL
      MEDIUM: ssl/crtlist: "crt" keyword in frontend
      DOC: configuration: document the "crt" frontend keyword

Willy Tarreau (14):
      BUG/MEDIUM: debug: close a possible race between thread dump and panic()
      DEBUG: thread: report the spin lock counters as seek locks
      DEBUG: thread: make lock time computation more consistent
      DEBUG: thread: report the wait time buckets for lock classes
      DEBUG: thread: don't keep the redundant _locked counter
      DEBUG: thread: make lock_stat per operation instead of for all operations
      DEBUG: thread: reduce the struct lock_stat to store only 30 buckets
      MINOR: lbprm: add a new callback ->server_requeue to the lbprm
      MEDIUM: server: allocate a tasklet for asyncronous requeuing
      MAJOR: leastconn: postpone the server's repositioning under contention
      BUG/MEDIUM: fd: mark FD transferred to another process as FD_CLONED
      DOC: watchdog: document the sequence of the watchdog and panic
      DEV: h2: add a Lua-based HTTP/2 connection tracer
      DEV: h2: fix flags for the continuation frame

---


Reply via email to