Hi,

HAProxy 2.5-dev3 was released on 2021/08/01. It added 48 new commits
after version 2.5-dev2.

There are not that many new features this time due to quite some time being
spent dealing with old bugs (new stable releases should be emitted soon
with backports). The main issues that were addressed in this release are a
remaining case where the H2 mux could fail to consider an early close, some
issues with the master's internal variables being unexpectedly exposed to
sub-programs and used even when checking config, a faint but possible race
condition in the FD takeover code that's used by the idle connections pool,
pollers "poll" and "evport" ignoring inter-thread wakeups since 2.1 (which
proves that nobody uses them in thread configurations).

Leaving bugs aside, this version still improves a few points:
  - since the introduction of threads in 1.8, memory barriers used to be
    overly conservative on x86. These were relaxed to compiler barriers
    only, and resulted in a 2-2.5% performance increase on a 16-thread
    test. It would theoretically be possible to even remove these
    compiler barriers but this would require that the rest of the code
    using them is carefully cleaned up to always use atomic load/store
    operations, which is not the case right now.

  - a new option "httpslog" was added to complement "httplog". It aims at
    providing some info about the TLS frontend connection by default, such
    as the ciphers used and errors met etc. It is also possible to disable
    low-level SSL error reports to only use these ones (and this should be
    the long-term direction to take). A few sample fetch functions were
    added to extract the SSL-level info. I'm aware that the thread on this
    subject is still active, and any feedback is welcome if that helps to
    further improve the situation for users.

  - the long-broken "option http_proxy" was removed. It has never worked
    in HTX mode (it broke in 1.9) indicating that nobody uses it anymore,
    has never supported anything but raw IPv4 addresses. Nowadays using a
    few http-request rules it's possible to do much more, support IPv6
    and even DNS-based resolution.

  - an internal proxy status flag PR_CAP_INT indicates that a proxy is
    for internal use only and must not appear in the stats. This allowed
    to further refine the previous solution that allows to dump stats in
    a stopping process.

  - a few small and hopefully harmless changes were made to the polling
    layers to prepare the introduction of thread groups

>From what I'm hearing about code pieces being cleaned up, next version
should have more goodies. I'm personally still trying to figure how to
safely integrate the notion of thread groups at the file descriptor layer,
and I hope I'll have that sorted out for next version. This probably is
the trickiest part when it comes to thread groups because FDs are process
wide and need to be carefully isolated. But I'm not yet discouraged :-)

Please find the usual URLs below :
   Site index       : http://www.haproxy.org/
   Discourse        : http://discourse.haproxy.org/
   Slack channel    : https://slack.haproxy.org/
   Issue tracker    : https://github.com/haproxy/haproxy/issues
   Wiki             : https://github.com/haproxy/wiki/wiki
   Sources          : http://www.haproxy.org/download/2.5/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.5/src/CHANGELOG
   Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/

Willy
---
Complete changelog :
Amaury Denoyelle (2):
      BUG/MEDIUM: ssl_sample: fix segfault for srv samples on invalid request
      MINOR: ssl: use __objt_* variant when retrieving counters

Christopher Faulet (7):
      CLEANUP: http_ana: Remove now unused label from http_process_request()
      BUG/MINOR: stats: Add missing agent stats on servers
      BUG/MINOR: resolvers: Use a null-terminated string to lookup in servers 
tree
      BUG/MINOR: mux-h1: Obey dontlognull option for empty requests
      BUG/MINOR: mux-h2: Obey dontlognull option during the preface
      BUG/MINOR: mux-h1: Be sure to swap H1C to splice mode when rcv_pipe() is 
called
      BUG/MEDIUM: mux-h2: Handle remaining read0 cases on partial frames

David CARLIER (1):
      BUILD/MINOR: memprof fix macOs build.

Miroslav Zagorac (1):
      BUILD: opentracing: fixed build when using pkg-config utility

Remi Tricot-Le Breton (7):
      BUG/MINOR: connection: Add missing error labels to conn_err_code_str
      MINOR: connection: Add a connection error code sample fetch
      MINOR: ssl: Enable error fetches in case of handshake error
      MINOR: ssl: Add new ssl_fc_hsk_err sample fetch
      MINOR: ssl: Define a default https log format
      MEDIUM: connection: Add option to disable legacy error log
      REGTESTS: ssl: Add tests for the connection and SSL error fetches

William Lallemand (7):
      BUG/MINOR: systemd: must check the configuration using -Ws
      MINOR: proxy: rename PR_CAP_LUA to PR_CAP_INT
      MINOR: mworker: the mworker CLI proxy is internal
      MINOR: stats: don't output internal proxies (PR_CAP_INT)
      CLEANUP: mworker: use the proxy helper functions in 
mworker_cli_proxy_create()
      CLEANUP: mworker: PR_CAP already initialized with alloc_new_proxy()
      REGTESTS: ssl: ssl_errors.vtc does not work with old openssl version

Willy Tarreau (22):
      BUG/MINOR: arg: free all args on make_arg_list()'s error path
      BUG/MINOR: cfgcond: revisit the condition freeing mechanism to avoid a 
leak
      MEDIUM: proxy: remove long-broken 'option http_proxy'
      BUG/MEDIUM: cfgcond: limit recursion level in the condition expression 
parser
      BUG/MEDIUM: mworker: do not register an exit handler if exit is expected
      BUG/MINOR: mworker: do not export HAPROXY_MWORKER_REEXEC across programs
      BUG/MINOR: check: fix the condition to validate a port-less server
      BUILD: threads: fix pthread_mutex_unlock when !USE_THREAD
      BUG/MEDIUM: connection: close a rare race between idle conn close and 
takeover
      BUG/MEDIUM: pollers: clear the sleeping bit after waking up, not before
      BUG/MINOR: select: fix excess number of dead/skip reported
      BUG/MINOR: poll: fix abnormally high skip_fd counter
      BUG/MINOR: pollers: always program an update for migrated FDs
      BUG/MINOR: fd: protect fd state harder against a concurrent takeover
      DOC: internals: document the FD takeover process
      MINOR: fd: update flags only once in fd_update_events()
      MINOR: poll/epoll: move detection of RDHUP support earlier
      REORG: fd: uninline fd_update_events()
      MEDIUM: fd: rely more on fd_update_events() to detect changes
      BUG/MINOR: freq_ctr: use stricter barriers between updates and readings
      MEDIUM: atomic: simplify the atomic load/store/exchange operations
      MEDIUM: atomic: relax the load/store barriers on x86_64

jenny-cheung (1):
      MINOR: deinit: always deinit the init_mutex on failed initialization

---

Reply via email to