Hi,

HAProxy 2.8-dev6 was released on 2023/03/28. It added 71 new commits
after version 2.8-dev5.

It's a bit late, I wanted to emit this one by end of last week or the
week-end but got disturbed by pending bugs that I preferred to analyze
first.

No less than 35 bugs were fixed in this release, most of them not
particularly new, so I can't say that we're degrading anything but it
indicates we still need to be careful, and chasing all of them continues
to slow everyone's progress down, so that's a pain.

A few 2.8-specific build errors and warnings were addressed when threads
are disabled. This is either a good indication that by now everyone uses
threads, or that very few people test -dev (or more likely that -dev is
not tested on rare systems where threads are disabled)

The detection of inherited incompatible libraries from external shared
libraries (typically Lua modules being loaded) was made more accurate and
is slightly relaxed. Instead of detecting that one of our dependencies
know about a different symbol, we now assume that it will use ours (which
is how ELF works) but we still detect if the lib expects an incompatible
API. For memory allocators, this means that building haproxy with jemalloc
is no longer incompatible with loading modules (and we've implemented a
generic version of the problematic call: malloc_trim()). For openssl, we
detect about 10 symbols to figure whether the loaded library is at risk of
calling a wrong combination of functions, and it proved efficient enough
to reject incompatible major libs, so that looks OK.

The -dMfail command line option that is used to inject random allocation
failures used to only enable the feature, but nothing was done until the
config was not modified to set the failure ratio. I got caught a few times
by this, thinking I was running under failures while I was not, so now by
default, setting it like this will automatically preset the failure rate
to 1%. This was sufficient to raise 8-10 bugs on error paths!

More info were made available in "show ssl ocsp-response" such as the
certificate path, and the OCSP update log format was improved. Some minor
QUIC updates and fixes were made, more debugging info was added to
"show fd". Some doc fixes for set-var() rendering in dconv. The DeviceAtlas
build command line was extended to support building in a way that is also
compatible with the v3 of the API that will become the default version in
by the end of this year.

Overall, nothing extraordinary, and the issue rate still remains a bit
high for my taste. As such, I think we'll continue to be careful about
changes to come in the near future and spend quite some time making what
we have more reliable.

Among the upcoming changes I'm still having in mind for the short term
are:
  - Aurélien's updates on event handlers to notify Lua about servers
    going up and down (the final batch is just waiting for review at
    the moment)

  - Christopher's improvements on error propagation and handling. The
    short-term ones are mostly cosmetic but will continue to improve
    the mid-term debuggability of the code so the more of it we get
    done the better we'll be able to debug in the future.

  - I'm almost done with finally supporting "bind" lines that span
    multiple thread groups so that starting with many threads will not
    throw an error anymore and will not require to manually duplicate
    the line, so I'm finishing this.

  - I'm also aware of a few QUIC changes to come (though I don't
    exactly remember which ones)

  - I also remember that there are a few other things that don't
    immediately come to my mind, and as usual all the doc/cleanup/etc
    stuff that's suitable for a cool down period where we're debugging
    and stabilizing.

So basically I'm positive that we should get a clean 2.8 release, but
we should make sure not to try to push too late stuff if we want to
finish cleaning leftovers from previous versions.

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.8/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.8/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 (13):
      BUG/MINOR: quic: wake up MUX on probing only for 01RTT
      BUG/MINOR: quic: ignore congestion window on probing for MUX wakeup
      BUG/MINOR: trace: fix hardcoded level for TRACE_PRINTF
      BUG/MEDIUM: mux-quic: release data from conn flow-control on qcs reset
      MINOR: mux-quic: complete traces for qcs emission
      MINOR: mux-quic: adjust trace level for MAX_DATA/MAX_STREAM_DATA recv
      MINOR: mux-quic: add flow-control info to minimal trace level
      BUG/MINOR: h3: properly handle incomplete remote uni stream type
      BUG/MINOR: mux-quic: prevent CC status to be erased by shutdown
      MINOR: mux-quic: interrupt qcc_recv*() operations if CC scheduled
      MINOR: mux-quic: ensure CONNECTION_CLOSE is scheduled once per conn
      MINOR: mux-quic: close on qcs allocation failure
      MINOR: mux-quic: close on frame alloc failure

Aurelien DARRAGON (5):
      BUG/MINOR: tcp_sample: fix a bug in fc_dst_port and fc_dst_is_local 
sample fetches
      MINOR: stick-table: add sc-add-gpc() to http-after-response
      MINOR: doc: missing entries for sc-add-gpc()
      DOC: config: set-var() dconv rendering issues
      BUG/MINOR: applet/new: fix sedesc freeing logic

Christopher Faulet (10):
      BUG/MEDIUM: mux-pt: Set EOS on error on sending path if read0 was received
      BUG/MEDIUM: proxy: properly stop backends on soft-stop
      BUG/MEDIUM: resolvers: Properly stop server resolutions on soft-stop
      DEBUG: cli/show_fd: Display connection error code
      DEBUG: ssl-sock/show_fd: Display SSL error code
      BUG/MEDIUM: mux-h1: Don't block SE_FL_ERROR if EOS is not reported on H1C
      BUG/MEDIUM: connection: Preserve flags when a conn is removed from an 
idle list
      BUG/MINOR: syslog: Request for more data if message was not fully received
      BUG/MEDIUM: stats: Consume the request except when parsing the POST 
payload
      BUG/MEDIUM: mux-h1: Wakeup H1C on shutw if there is no I/O subscription

David Carlier (1):
      BUILD: da: extends CFLAGS to support API v3 from 3.1.7 and onwards.

Frédéric Lécaille (5):
      BUG/MINOR: quic: Missing STREAM frame length updates
      BUG/MINOR: quic: Missing STREAM frame data pointer updates
      MINOR: quic: Stop stressing the acknowledgments process (RX ACK frames)
      BUG/MINOR: quic: Dysfunctional 01RTT packet number space probing
      BUG/MINOR: quic: Missing STREAM frame type updated

Miroslav Zagorac (1):
      BUG/MINOR: illegal use of the malloc_trim() function if jemalloc is used

Remi Tricot-Le Breton (5):
      MINOR: ssl: Change the ocsp update log-format
      MINOR: ssl: Use ocsp update task for "update ssl ocsp-response" command
      BUG/MINOR: ssl: Fix double free in ocsp update deinit
      MINOR: ssl: Accept certpath as param in "show ssl ocsp-response" CLI 
command
      MINOR: ssl: Add certificate path to 'show ssl ocsp-response' output

Tim Duesterhus (1):
      BUG/MINOR: ssl: Stop leaking `err` in ssl_sock_load_ocsp()

Willy Tarreau (30):
      BUG/MINOR: mux-h2: make sure the h2c task exists before refreshing it
      MINOR: buffer: add br_count() to return the number of allocated bufs
      MINOR: buffer: add br_single() to check if a buffer ring has more than 
one buf
      BUG/MEDIUM: mux-h2: only restart sending when mux buffer is decongested
      BUG/MINOR: mux-h2: set CO_SFL_STREAMER when sending lots of data
      BUG/MAJOR: qpack: fix possible read out of bounds in static table
      OPTIM: mux-h1: limit first read size to avoid wrapping
      MINOR: mux-h2: set CO_SFL_MSG_MORE when sending multiple buffers
      MINOR: ssl-sock: pass the CO_SFL_MSG_MORE info down the stack
      BUG/MEDIUM: stream: do not try to free a failed stream-conn
      BUG/MEDIUM: mux-h2: do not try to free an unallocated h2s->sd
      BUG/MEDIUM: mux-h2: erase h2c->wait_event.tasklet on error path
      BUG/MEDIUM: stconn: don't set the type before allocation succeeds
      BUG/MINOR: stconn: fix sedesc memory leak on stream allocation failure
      MINOR: dynbuf: set POOL_F_NO_FAIL on buffer allocation
      MINOR: pools: preset the allocation failure rate to 1% with -dMfail
      BUG/MEDIUM: mux-h1: properly destroy a partially allocated h1s
      BUG/MEDIUM: applet: only set appctx->sedesc on successful allocation
      BUILD: thread: implement thread_harmless_end_sig() for threadless builds
      BUILD: thread: silence a build warning when threads are disabled
      MINOR: debug: support dumping the libs addresses when running in verbose 
mode
      MINOR: pools: make sure 'no-memory-trimming' is always used
      MINOR: pools: intercept malloc_trim() instead of trying to plug holes
      MEDIUM: pools: move the compat code from trim_all_pools() to malloc_trim()
      MINOR: pools: export trim_all_pools()
      MINOR: pattern: use trim_all_pools() instead of a conditional 
malloc_trim()
      MINOR: tools: relax dlopen() on malloc/free checks
      MEDIUM: tools: further relax dlopen() checks too consider grouped symbols
      BUG/MINOR: pools: restore detection of built-in allocator
      MINOR: pools: report a replaced memory allocator instead of just 
malloc_trim()

---

Reply via email to