Hi,

HAProxy 2.6-dev7 was released on 2022/04/23. It added 40 new commits
after version 2.6-dev6.

This version addresses the stability issue that was affecting dev6, and
chasing this bug gave the opportunity to simplify and clean up a few parts
that remained needlessly complicated after the modification of the
connection layer.

A bug was found in the idle connections management code and it also affects
2.5, but it's extremely hard to hit (we couldn't reproduce it). It could
randomly crash the process under high contention on the server side due to
a missing lock. It's very unlikely anyone will meet it but as we're used
to see reports after bugs are fixed, I prefer to warn upfront :-) The fix
will be backported next week anyway.

On the QUIC front, the multi-buffer output window is now effective so that
the download bandwidth will not be limited by bufsize divided by RTT
anymore, and POST should work better (there used to be truncated uploads
and stalled transfers before this version, all of which have been
addressed). More generally the retransmit code was improved.

As requested in github issue #1604 by our SSL experts, DHE based ciphers
are now disabled by default, and the DH params now default to those of
RFC7919 instead of our locally-generated ones.

The http-client now supports server certificate verification.

Finally, the server queue management was made way more scalable with
threads. Till now dequeuing would wake up next pending entry which could
run on a different thread, resulting in a lot of entries in the shared run
queue when many threads were running, causing a lot of contention on the
scheduler's lock, thus slowing down the dequeuing and adding in turn
contention on the queue's lock, to the point that a few users were seeing
similar performance with N threads as with a single thread when queues
were highly sollicitated. A small change was made both in the scheduler
and in the dequeuing code to bypass this locking and completely address
this issue. My tests showed performance gains from 4 to 10 on extreme
workloads with 16 threads. I will likely apply yet another tiny update
to improve fairness but as it is I consider the limitation addressed. I
intend to eventually backport this to 2.5 and 2.4, given that I managed
to trigger the watchdog during my initial tests. If some users are facing
high CPU usages with deep backend queues reported in the stats, I would
appreciate it if they could test 2.6-dev7 and share their experience.

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

Willy
---
Complete changelog :
Amaury Denoyelle (14):
      MINOR: mux-quic: split xfer and STREAM frames build
      REORG: quic: use a dedicated module for qc_stream_desc
      MINOR: quic-stream: use distinct tree nodes for quic stream and qcs
      MINOR: quic-stream: add qc field
      MEDIUM: quic: implement multi-buffered Tx streams
      MINOR: quic-stream: refactor ack management
      MINOR: quic: limit total stream buffers per connection
      MINOR: mux-quic: implement immediate send retry
      MINOR: cfg-quic: define tune.quic.conn-buf-limit
      BUG/MINOR: mux-quic: unsubscribe on release
      BUG/MINOR: mux-quic: handle null timeout
      BUG/MINOR: mux-quic: remove dead code in qcs_xfer_data()
      BUG/MEDIUM: mux-quic: fix stalled POST requets
      BUG/MINOR: mux-quic: fix POST with abortonclose

Christopher Faulet (10):
      DEV: stream: Fix conn-streams dump in full stream message
      CLEANUP: conn-stream: Rename cs_conn_close() and cs_conn_drain_and_close()
      CLEANUP: conn-stream: Rename cs_applet_release()
      MINOR: conn-stream: Rely on endpoint shutdown flags to shutdown an applet
      BUG/MINOR: cache: Disable cache if applet creation fails
      BUG/MINOR: backend: Don't allow to change backend applet
      BUG/MEDIUM: conn-stream: Set back CS to RDY state when the appctx is 
created
      MINOR: stream: Don't needlessly detach server endpoint on early client 
abort
      MINOR: conn-stream: Make cs_detach_* private and use cs_destroy() from 
outside
      BUG/MAJOR: connection: Never remove connection from idle lists outside 
the lock

Frédéric Lécaille (1):
      BUG/MEDIUM: quic: Possible crash with released mux

Remi Tricot-Le Breton (5):
      MINOR: ssl: Use DH parameters defined in RFC7919 instead of hard coded 
ones
      MEDIUM: ssl: Disable DHE ciphers by default
      BUILD: ssl: Fix compilation with OpenSSL 1.0.2
      MINOR: ssl: Add 'show ssl providers' cli command and providers list in 
-vv option
      REGTESTS: ssl: Update error messages that changed with OpenSSLv3.1.0-dev

William Lallemand (5):
      MINOR: init: add the pre-check callback
      MEDIUM: httpclient: change the init sequence
      MEDIUM: httpclient/ssl: verify required
      MINOR: httpclient/mworker: disable in the master process
      MEDIUM: httpclient/ssl: verify is configurable and disabled by default

Willy Tarreau (5):
      BUILD: calltrace: fix wrong include when building with TRACE=1
      BUG/MEDIUM: logs: fix http-client's log srv initialization
      MINOR: task: add a new task_instant_wakeup() function
      MEDIUM: queue: use tasklet_instant_wakeup() to wake tasks
      DOC: remove my name from the config doc

---

Reply via email to