Hi,

HAProxy 2.0.32 was released on 2023/06/12. It added 35 new commits
after version 2.0.31.

This one is pretty similar to the 2.2.30, with a bit less fixes. Mainly:

  * The SPOE was fixed to limit the number of idle applets on edge cases. On
    sporadic bursts, it was possible to systematically start new applets
    because the SPOE processing frequency was lower than the messages rate,
    and this independently on the number of idle applets. The idle applets
    tracking was improved to be able to properly reuse them.
    This fix revealed a flaw in the way synchronous frames were handled,
    leading to a raise of the message processing latency. To fix this issue,
    in synchronous mode, a SPOE applet will now systematically try to send a
    frame when it is woken up, except if it is still waiting for a ACK frame
    after a receive attempt.
    Finally, a crash for engines configured on disabled proxies was
    fixed. SPOE engines must not be released for such proxies during the
    startup because some resources may be shared with other engines, for
    instance the ACLs.

  * The total boot time is now measured. It is used to postpone the startup
    of health checks. It is pretty useful for very large configurations
    taking up few seconds to start, to not schedule some servers' checks in
    past. This also helps to have a better distribution of health-checks
    when "spread-checks" option is used. In addition, the spread-checks is
    also used at boot time, making the load much smoother from the start.

  * The pool_gc() calls that were made a bit too often on stopping proxies
    were relaxed. Sometimes they were causing excess memory contention and
    were even competing against malloc_trim().

  * The read expiration date is now updated on synchronous sends for all
    streams except independent ones. This fixed an old bug when a filter is
    configured. Write activities on synchronous sends were lost. With slow
    clients uploading large object, it was possible to reach the server
    timeout.

  * Aurélien fixed wrong report for tracking servers leaving drain state. He
    also centralized proxy and server stats updates on server state
    transition to be sure to not miss an update on some transitions.

  * An issue affecting the H1 multiplexer was fixed. If the response was
    fully transferred before the whole request is read, there was a risk
    that the channel is left open without any further processing. In the
    end, this caused the stream to enter a spinning loop which triggered an
    assertion failure crash.

  * Aborting pipelined HTTP/1.1 transfers could sometimes result in a high
    CPU usage until the timeout stroke. At first glance, we thought it was
    not possible to hit this bug on the 2.2 and 2.0. But, we were wrong. It
    could happen when the splicing is in-use on the response.  The fix was
    thus backported

  * In the H2 multiplexer, we now take care to produce log messages on
    invalid requests.

Thanks everyone for your help and your contributions !

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.0/src/
   Git repository   : https://git.haproxy.org/git/haproxy-2.0.git/
   Git Web browsing : https://git.haproxy.org/?p=haproxy-2.0.git
   Changelog        : https://www.haproxy.org/download/2.0/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


---
Complete changelog :
Aurelien DARRAGON (9):
      MINOR: proxy/pool: prevent unnecessary calls to pool_gc()
      BUG/MINOR: hlua: unsafe hlua_lua2smp() usage
      BUG/MINOR: log: fix memory error handling in parse_logsrv()
      BUG/MINOR: proxy: missing free in free_proxy for redirect rules
      BUG/MINOR: server: incorrect report for tracking servers leaving drain
      MINOR: server: explicitly commit state change in srv_update_status()
      BUG/MINOR: server: don't miss proxy stats update on server state 
transitions
      BUG/MINOR: server: don't miss server stats update on server state 
transitions
      BUG/MINOR: server: don't use date when restoring last_change from state 
file

Christopher Faulet (12):
      BUG/MEDIUM: spoe: Don't set the default traget for the SPOE agent frontend
      BUG/MEDIUM: mux-h1: Wakeup H1C on shutw if there is no I/O subscription
      BUG/MEDIUM: Update read expiration date on synchronous send
      BUG/MEDIUM: mux-h1: Handle connection error after a synchronous send
      BUG/MINOR: mux-h1: Account consumed output data on synchronous connection 
error
      BUG/MINOR: tcp-rules: Don't shortened the inspect-delay when EOI is set
      DOC: config: Clarify conditions to shorten the inspect-delay for TCP rules
      MINOR: spoe: Don't stop disabled proxies
      BUG/MEDIUM: filters: Don't deinit filters for disabled proxies during 
startup
      BUG/MEDIUM: spoe: Don't start new applet if there are enough idle ones
      DOC: config: Fix bind/server/peer documentation in the peers section
      BUG/MINOR: spoe: Only skip sending new frame after a receive attempt

Frédéric Lécaille (1):
      CONTRIB: Add vi file extensions to .gitignore

Ilya Shipitsin (1):
      CI: bump "actions/checkout" to v3 for cross zoo matrix

Remi Tricot-Le Breton (1):
      BUG/MINOR: ssl: Use 'date' instead of 'now' in ocsp stapling callback

William Lallemand (2):
      BUG/MEDIUM: mworker: don't register mworker_accept_wrapper() when master 
FD is wrong
      BUG/MINOR: mworker: prevent incorrect values in uptime

Willy Tarreau (9):
      BUG/MINOR: mux-h2: make sure the h2c task exists before refreshing it
      BUG/MEDIUM: mux-h2: erase h2c->wait_event.tasklet on error path
      BUG/MINOR: mux-h2: make sure to produce a log on invalid requests
      MINOR: checks: make sure spread-checks is used also at boot time
      MINOR: clock: measure the total boot time
      BUG/MINOR: checks: postpone the startup of health checks by the boot time
      BUG/MEDIUM: mux-h1: do not refrain from signaling errors after end of 
input
      SCRIPTS: publish-release: update the umask to keep group write access
      BUG/MINOR: debug: do not emit empty lines in thread dumps

--
Christopher Faulet

Reply via email to