HAProxy 3.0-dev11 was released on 2024/05/10. It added 43 new commits
after version 3.0-dev10.

Another very calm release, thanks to two days off here in France,
combined with the return of the sun today :-)

Some 3.0 regressions were fixed, such as the broken logs over TCP
after recent ring changes, and a QUIC crash when sending STOP_SENDING
after the stream above was detached.

The RST_STREAM reason code can finally be forwarded to the server for
client aborts. This addresses the problem a few users were facing with
gRPC where the abort reason was not respected. For now this is purposely
limited to only a few reason codes that are relevant to gRPC so that we
don't ruin the possibility to later extend that to H3 and maybe H1.

We also managed to address the design issue around the buffer_wait code
(the stuff that queues tasks waiting for a buffer on low memory). Now
tasks are queued by criticality depending on what buffer is missing, so
as to guarantee forward progress. It works pretty well for H1 and applets
already so that convinced me that we should finish it instead of dropping
all that. H2 and a few other places still need to be slightly revisited,
and I'd like to also merge a simplification that I experimented with that
allows the scheduler to deal itself with waiters instead of having every
user think about calling offer_buffers() when leaving. For now that part
was put to pause because doing it revealed another recent hard-to-trigger
regression that we'll work on early next week.

Finally, the build on Illumos was fixed, the log format options are now
processed at boot time to improve runtime processing performance, and as
usual, a few cleanups, doc and CI updates were included.

Overall this is getting good and I think we're on the right track for a
release around the end of the month.

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.0/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.0/src/CHANGELOG
   Dataplane API    : 
   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 :
Amaury Denoyelle (1):
      BUG/MEDIUM: mux-quic: fix crash on STOP_SENDING received without SD

Aurelien DARRAGON (3):
      OPTIM: log: resolve logformat options during postparsing
      BUG/MEDIUM: log/ring: broken syslog octet counting
      DOC: lua: fix filters.txt file location

Christopher Faulet (8):
      MEDIUM: stconn/muxes: Add an abort reason for SE shutdowns on muxes
      MINOR: mux-h2: Set the SE abort reason when a RST_STREAM frame is received
      MEDIUM: mux-h2: Forward h2 client cancellations to h2 servers
      MINOR: mux-quic: Set tha SE abort reason when a STOP_SENDING frame is 
      MINOR: stconn: Add samples to retrieve about stream aborts
      MINOR: mux-quic: Add .ctl callback function to get info about a mux 
      MINOR: muxes: Add ctl commands to get info on streams for a connection
      MINOR: connection: Add samples to retrieve info on streams for a 

Ilia Shipitsin (3):
      BUILD: clock: improve check for pthread_getcpuclockid()
      CI: add Illumos scheduled workflow
      CI: netbsd: limit scheduled workflow to parent repo only

Patrick Hemmer (3):
      REGTEST: add tests for acl() sample fetch
      BUG/MINOR: acl: support built-in ACLs with acl() sample
      BUG/MINOR: cfgparse: use curproxy global var from config post validation

Valentine Krasnobaeva (1):
      BUG/MINOR: haproxy: only tid 0 must not sleep if got signal

Willy Tarreau (24):
      MINOR: dynbuf: pass a criticality argument to b_alloc()
      MINOR: dynbuf: add functions to help queue/requeue buffer_wait fields
      MINOR: dynbuf: use the b_queue()/b_requeue() functions everywhere
      MEDIUM: dynbuf: make the buffer_wq an array of list heads
      CLEANUP: tinfo: better align fields in thread_ctx
      MINOR: dynbuf: provide a b_dequeue() function to detach a bw from the 
      MEDIUM: dynbuf: generalize the use of b_dequeue() to detach buffer_wait
      MEDIUM: dynbuf/stream: re-enable queueing upon failed buffer allocation
      MEDIUM: dynbuf/stream: do not allocate the buffers in the callback
      MEDIUM: applet: make appctx_buf_available() only wake the applet up, not 
      MINOR: applet: set the blocking flag in the buffer allocation function
      MINOR: applet: adjust the allocation criticity based on the requested 
      MINOR: dynbuf/mux-h1: use different criticalities for buffer allocations
      MEDIUM: dynbuf/mux-h1: do not allocate the buffers in the callback
      MEDIUM: dynbuf: refrain from offering a buffer if more critical ones are 
      MINOR: stconn: report that a buffer allocation succeeded
      MINOR: stream: report that a buffer allocation succeeded
      MINOR: applet: report about buffer allocation success
      MINOR: mux-h1: report that a buffer allocation succeeded
      MEDIUM: stream: allocate without queuing when retrying
      MEDIUM: channel: allocate without queuing when retrying
      MEDIUM: mux-h1: allocate without queuing when retrying
      MEDIUM: dynbuf: implement emergency buffers
      MEDIUM: dynbuf: use emergency buffers upon failed memory allocations


Reply via email to