Hi,
HAProxy 2.9-dev11 was released on 2023/11/24. It added 42 new commits
after version 2.9-dev10.
Some last-minute updates in this version:
- a few fixes, mostly for QUIC (possible crash when using tcp-request
connection rules; crash during retransmissions, memory leak under
heavy load)
- zero-copy support was finally enabled as well on the QUIC mux
- reverse-http: outgoing connections are now evenly spread over the
allowed threads; previously they would all be created from the same
thread. While it was not a problem for small usages like application
development, it was not well suited to application hosting.
- the "log-sticky" balancing algorithm was finally renamed to "sticky"
in case it spreads to tcp/http in the future.
- the post_mortem struct I spoke about to aim at easing core dump
analysis was finally created. It contains OS name and version,
haproxy exact version, possibly later some of the dependencies
versions, the threads mapping and some boot-time info such as
FD/RAM limits and initial uid/gid. I think some more info will
arrive in the future (capabilities etc), but the goal was to have
something to start with. Some of the contents can be dumped using
"show dev" that we may start to ask for along with tome bug reports.
This is intended to evolve anyway, with the goal of always reducing
the bug resolution time and effort. I think we'll backport it to 2.8
in a next version once it settles to something we consider useful.
- a new option "preserve-env" to the "external-check" directive to
avoid stripping the environment variables for such checks; some
scripts heavily depend on the environment and it was complicated
for some users. The default behavior is of course unchanged.
- a new "HTTP_3.0" ACL to complete the collection
- some doc updates.
Christopher told me he saw one case where the H2 mux is still inefficient
in zero-copy mode, we'll check this soon. I still want to update the doc
regarding the tcp/http actions. Now after some discussion I have a better
idea of how to proceed, there will be a new "actions" section and all
actions will be marked yes/no regarding their compatibility with the
various rulesets. That's a tedious work but we can't stay forever with
something that encourages copy-pasting. William has some possible cleanups
in queue for something related to the cert callback used by WolfSSL.
I intend to emit another dev in the middle-end of next week (ideally before
Friday so that those who don't know what to do before the week-end have
something to play with), and I think unless we're facing a big last-minute
bug, we should be good for a release the week after (i.e. approx 5-6).
Please continue to test and report doubts and issues. Doc cleanups are
also welcome.
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/2.9/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/2.9/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 (10):
BUG/MAJOR: quic: complete thread migration before tcp-rules
MINOR: quic: remove unneeded QUIC specific stopping function
MINOR: acl: define explicit HTTP_3.0
DEBUG: connection/flags: update flags for reverse HTTP
MINOR: rhttp: rename proto_reverse_connect
MINOR: rhttp: large renaming to use rhttp prefix
MINOR: rhttp: add count of active conns per thread
MEDIUM: rhttp: support multi-thread active connect
MINOR: listener: allow thread kw for rhttp bind
DOC: rhttp: replace maxconn by nbconn
Christopher Faulet (3):
BUG/MEDIUM: mux-h1: Don't set CO_SFL_MSG_MORE flag on last fast-forward
send
MEDIUM: mux-quic: Add consumer-side fast-forwarding support
MAJOR: h3: Implement zero-copy support to send DATA frame
Eugene Dorfman (1):
DOC: 51d: updated 51Degrees repo URL for v3.2.10
Frédéric Lécaille (5):
BUG/MEDIUM: quic: Possible crash for connections to be killed
MINOR: quic: Add traces to debug frames handling during retransmissions
BUG/MEDIUM: quic: Possible crash during retransmissions and heavy load
BUG/MINOR: quic: Possible leak of TX packets under heavy load
BUG/MINOR: quic: Possible RX packet memory leak under heavy load
Ilya Shipitsin (2):
CLEANUP: assorted typo fixes in the code and comments
CI: limit codespell checks to main repo, not forks
William Lallemand (1):
BUG/MINOR: startup: set GTUNE_SOCKET_TRANSFER correctly
Willy Tarreau (20):
BUG/MINOR: sock: mark abns sockets as non-suspendable and always unbind
them
BUILD: cache: fix build error on older compilers
BUILD: log: silence a build warning when threads are disabled
BUG/MINOR: server: do not leak default-server in defaults sections
DEBUG: tinfo: store the pthread ID and the stack pointer in tinfo
MINOR: debug: start to create a new struct post_mortem
MINOR: debug: add OS/hardware info to the post_mortem struct
MINOR: debug: report in port_mortem whether a container was detected
MINOR: debug: report in post_mortem if the container techno used is docker
MINOR: debug: detect CPU model and store it in post_mortem
MINOR: debug: report any detected hypervisor in post_mortem
MINOR: debug: collect some boot-time info related to the process
MINOR: debug: copy the thread info into the post_mortem struct
MINOR: debug: dump the mapping of the libs into post_mortem
MINOR: debug: add the ability to enter components in the post_mortem
struct
MINOR: init: add info about the main program to the post_mortem struct
DOC: management: document "show dev"
DOC: install: update the list of openssl versions
MINOR: ext-check: add an option to preserve environment variables
MINOR: log/balance: rename "log-sticky" to "sticky"
---