Hi,

Thanks for the release! :) I'm raising my hand for the backport of
"del-header -m" if possible. It is definitely not critical but would
certainly make my life easier. :)

Kind regards,

sob., 21 lis 2020 o 16:56 Willy Tarreau <[email protected]> napisał(a):

> Hi,
>
> HAProxy 2.4-dev1 was released on 2020/11/21. It added 107 new commits
> after version 2.4-dev0.
>
> Let me say that despite having spent quite some time recently on a few
> really irritating bugs, I'm quite happy to see that the new development
> cycle starts to pay off. It's probably the first ever new branch that
> gets 107 patches 2 weeks after having been opened, and the majority are
> updates and not bug fixes.
>
> First, let's have a quick round on the bugs fixed since last release
> (2.3.2 should be issued shortly). The latest SSL changes in 2.3 had a
> little bit of crt-list breakage that was quickly addressed. A bug in
> the http-after-response rules could possibly cause random crashes. An
> old bug in the SPOE with a dangling pointer could cause random crashes
> (Many thanks to Maciej Zdeb for working hard for two months to isolate
> this one). Checks could crash if a "proto" directive was set on the
> server lines. And finally the last one, a dangling session pointer in
> the idle connections was sometimes used after the session had been
> detached, causing random crashes. These were detected on 2.3 which
> amplifies the issue. While it's possible to crash 2.2 on the same issue
> by applying a minor patch, it's impossible to say if a similar code path
> is used without that patch. And a few crash reports there look suspiciously
> related, so given that backporting this one requires extreme care, I'd
> appreciate it if the rare ones who occasionally experience a crash in 2.2
> could run an instance on 2.4-dev1 and report if they think their issue is
> gone.
>
> Now the new stuff. First there was a nice liftup of the CI to migrate to
> GitHub actions (thanks Tim and Ilya for the work). We now have a larger
> test matrix which seems more reliable and is more controllable than the
> one we previously used on Travis. It was also an opportunity to start to
> make the SSL build process more resistant to the non-linear evolutions of
> the various OpenSSL forks.
>
> Some changes were made to the pattern code to stop freezing the whole
> process each time a del-acl or del-map action is performed. While it used
> to be OK when dealing with only a few hundreds of thousands of entries,
> it's not fun anymore with maps containing 20 million IP addresses where it
> used to cause long pauses that sometimes managed to trigger the watchdog!
> With this change, the ACL/map entries are now versionned and atomically
> updated, so that it is possible to perform a delete in the background in
> small batches, and even if it requires a full scan for certain types, it
> will be done in small batches.
>
> The cache used not to fully comply with the standards, as it would cache
> an object that didn't have an explicit expiration time nor validator. Rémi
> fixed this. Normally nobody should notice anything because such objects are
> almost non-existent nowadays. However maybe some broken applications will
> not be cached anymore, but for good, in that it was not really possible to
> check for validity there.
>
> It used to be possible to change a server's IP address at run time form the
> CLI but it was not possible to enable SSL at run time because it required
> to allocate an SSL context. William Dauchy worked on this so that this
> limitation doesn't exist anymore.
>
> The memory of the old process usage during reloads should significantly
> on systems supporting malloc_trim() (i.e. glibc for now). While working
> on optimizing the patterns I was annoyed by the huge memory usage after
> replacing a whole map and have been looking for a way to compact unused
> memory. I discovered this malloc_trim() that does exactly what one would
> expect, i.e. unmap all unused pages from the allocator's caches. My old
> process went down form 1.7 GB to 260 MB! Those doing frequent reloads
> might be interested in giving it a try.
>
> Amaury added some SSL stats so that it will now be possible to count
> handshakes an errors on the two sides. More detailed info will likely
> come over time but for me this will be related to the ability to report
> better SSL logs as well.
>
> Christopher and Baptiste finally finished their work on the MQTT and FIX
> parsers. These can be used to extract information from initial messages
> and steer the traffic to one server or another (or to drop it).
>
> Fred added some traces to the peers so that exchanges can now be observed.
> This is essentially useful for debugging, but always interesting to see
> what flows between nodes during tables synchronization. This should be
> improved over time.
>
> Maciej implemented the "-m" argument to the "del-header" action, that was
> initially planned for 2.2 and that everyone forgot about. This one allows
> to specify if the argument to del-header designates a full header name,
> a substring, a prefix, a suffix, or even a regex. This is something a lot
> of users have been missing after "rspdel" was removed. I suspect that his
> work is safe for backporting, so if anyone currently uses 2.2 or 2.3 and
> is using ugly tricks (or Lua) just to remove header names by prefix for
> example, just raise your hand to ask for a backport, we'll see what can
> be done.
>
> I also want to thank those who contributed new regression tests, we've got
> 12 new ones after 2.3, this is very useful and significantly contributes
> to the code's quality and reliability.
>
> Last point, for those who always want to live on the bleeding edge, the
> changes in this version are still pretty minor and relatively safe, I'm
> going to put it on haproxy.org, feel free to do so as well (but not on
> all servers, as usual).
>
> 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.4/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.4/src/CHANGELOG
>    Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/
>
> Willy
> ---
> Complete changelog :
> Amaury Denoyelle (10):
>       MINOR: ssl: instantiate stats module
>       MINOR: ssl: count client hello for stats
>       MINOR: ssl: add counters for ssl sessions
>       BUG/MINOR: stats: free dynamically stats fields/lines on shutdown
>       BUG/MEDIUM: stats: prevent crash if counters not alloc with dummy one
>       BUG/MEDIUM: check: reuse srv proto only if using same mode
>       MINOR: check: report error on incompatible proto
>       MINOR: check: report error on incompatible connect proto
>       MINOR: ssl: remove client hello counters
>       MEDIUM: stats: add counters for failed handshake
>
> Baptiste Assmann (2):
>       MINOR: sample: Add converters to parse FIX messages
>       MINOR: sample: Add converts to parses MQTT messages
>
> Christopher Faulet (21):
>       MINOR: ist: Add istend() function to return a pointer to the end of
> the string
>       REGTEST: converter: Add a regtest for fix converters
>       REGTEST: converter: Add a regtest for MQTT converters
>       MINOR: http-htx: Add understandable errors for the errorfiles parsing
>       DOC: config: Fix a typo on ssl_c_chain_der
>       BUG/MINOR: http-fetch: Fix calls w/o parentheses of the cookie
> sample fetches
>       BUG/MINOR: http-htx: Handle warnings when parsing http-error and
> http-errors
>       BUG/MAJOR: spoe: Be sure to remove all references on a released spoe
> applet
>       MINOR: spoe: Don't close connection in sync mode on processing
> timeout
>       BUG/MINOR: tcpcheck: Don't warn on unused rules if check option is
> after
>       MINOR: init: Fix the prototype for per-thread free callbacks
>       MINOR: config/mux-h2: Return ERR_ flags from init_h2() instead of a
> status
>       CLEANUP: config: Return ERR_NONE from config callbacks instead of 0
>       REGTEST: make ssl_client_samples and ssl_server_samples require to
> 2.2
>       BUG/MEDIUM: filters: Forward all filtered data at the end of http
> filtering
>       BUG/MINOR: http-ana: Don't wait for the body of CONNECT requests
>       CLEANUP: flt-trace: Remove unused random-parsing option
>       MINOR: flt-trace: Add an option to inhibits trace messages
>       MINOR: flt-trace: Use a bitfield for the trace options
>       REGTESTS: Add a script to test the random forwarding with several
> filters
>       BUG/MEDIUM: http-ana: Don't eval http-after-response ruleset on
> empty messages
>
> Eric Salama (1):
>       MINOR: cfgparse: tighten the scope of newnameserver variable, free
> it on error.
>
> Frédéric Lécaille (3):
>       MINOR: peers: Add traces to peer_treat_updatemsg().
>       BUG/MINOR: peers: Do not ignore a protocol error for dictionary
> entries.
>       BUG/MINOR: peers: Missing TX cache entries reset.
>
> Ilya Shipitsin (9):
>       CI: travis-ci: remove amd64, osx builds
>       CI: travis-ci: arm64 are not allowed to fail anymore
>       BUILD: ssl: use SSL_MODE_ASYNC macro instead of OPENSSL_VERSION
>       CI: Github Actions: enable prometheus exporter
>       CI: Github Actions: remove LibreSSL-3.0.2 builds
>       CI: Github Actions: enable BoringSSL builds
>       CI: travis-ci: remove builds migrated to GH actions
>       CI: Github Action: run "apt-get update" before packages restore
>       BUILD: SSL: guard TLS13 ciphersuites with
> HAVE_SSL_CTX_SET_CIPHERSUITES
>
> Jerome Magnin (1):
>       CLEANUP: cfgparse: remove duplicate registration for transparent
> build options
>
> Joao Morais (1):
>       DOC: clarify how to create a fallback crt
>
> Maciej Zdeb (3):
>       BUG/MINOR: http-fetch: Extract cookie value even when no cookie name
>       BUG/MINOR: http_htx: Fix searching headers by substring
>       MINOR: http_act: Add -m flag for del-header name matching method
>
> Matthieu Guegan (1):
>       BUILD: makefile: enable crypt(3) for OpenBSD
>
> Remi Tricot-Le Breton (1):
>       MEDIUM: cache: Change caching conditions
>
> Thierry Fournier (2):
>       BUG/MINOR: pattern: a sample marked as const could be written
>       BUG/MINOR: lua: set buffer size during map lookups
>
> Tim Duesterhus (6):
>       CI: Expand use of GitHub Actions for CI
>       REGTESTS: Add sample_fetches/cook.vtc
>       CI: Stop hijacking the hosts file
>       CI: Make the h2spec workflow more consistent with the VTest workflow
>       CI: Pass the github.event_name to matrix.py
>       CI: Clean up Windows CI
>
> William Dauchy (3):
>       REGTESTS: converter: add url_dec test
>       MINOR: ssl: create common ssl_ctx init
>       MEDIUM: cli/ssl: configure ssl on server at runtime
>
> William Lallemand (10):
>       REGTEST: ssl: test wildcard and multi-type + exclusions
>       BUG/MEDIUM: ssl/crt-list: correctly insert crt-list line if crt
> already loaded
>       REGTEST: ssl: mark reg-tests/ssl/ssl_crt-list_filters.vtc as broken
>       DOC: add missing 3.10 in the summary
>       REGTEST: server/cli_set_ssl.vtc requires OpenSSL
>       BUG/MINOR: ssl: segv on startup when AKID but no keyid
>       BUG/MEDIUM: ssl/crt-list: bundle support broken in crt-list
>       BUG/MEDIUM: ssl: error when no certificate are found
>       BUG/MINOR: ssl/crt-list: load bundle in crt-list only if activated
>       BUG/MEDIUM: ssl/crt-list: fix error when no file found
>
> Willy Tarreau (33):
>       MINOR: compat: automatically include malloc.h on glibc
>       MEDIUM: pools: call malloc_trim() from pool_gc()
>       MEDIUM: pattern: call malloc_trim() on pat_ref_reload()
>       MINOR: pattern: move the update revision to the pat_ref, not the
> expression
>       CLEANUP: pattern: delete the back refs at once during
> pat_ref_reload()
>       MINOR: pattern: new sflag PAT_SF_REGFREE indicates regex_free() is
> needed
>       MINOR: pattern: make the delete and prune functions more generic
>       MEDIUM: pattern: link all final elements from the reference
>       MEDIUM: pattern: change the pat_del_* functions to delete from the
> references
>       MINOR: pattern: remerge the list and tree deletion functions
>       MINOR: pattern: perform a single call to pat_delete_gen() under the
> expression
>       CLEANUP: acl: don't reference the generic pattern deletion function
> anymore
>       CLEANUP: pattern: remove pat_delete_fcts[] and pattern_head->delete()
>       MINOR: pattern: introduce pat_ref_delete_by_ptr() to delete a valid
> reference
>       MINOR: pattern: store a generation number in the reference patterns
>       MEDIUM: pattern: only match patterns that match the current
> generation
>       MINOR: pattern: add pat_ref_commit() to commit a previously inserted
> element
>       MINOR: pattern: implement pat_ref_load() to load a pattern at a
> given generation
>       MINOR: pattern: add pat_ref_purge_older() to purge old entries
>       MEDIUM: pattern: make pat_ref_prune() rely on pat_ref_purge_older()
>       MINOR: pattern: during reload, delete elements frem the ref, not the
> expression
>       MINOR: pattern: prepare removal of a pattern from the list head
>       MEDIUM: pattern: turn the pattern chaining to single-linked list
>       BUG/MINOR: ssl: don't report 1024 bits DH param load error when it's
> higher
>       MINOR: server: remove idle lock in srv_cleanup_connections
>       BUILD: ssl: silence build warning on uninitialised counters
>       BUILD: http-htx: fix build warning regarding long type in printf
>       BUG/MEDIUM: peers: fix decoding of multi-byte length in stick-table
> messages
>       REGTESTS: mark the abns test as broken again
>       DOC: coding-style: update a few rules about pointers
>       CLEANUP: connection: do not use conn->owner when the session is known
>       BUG/MAJOR: connection: reset conn->owner when detaching from session
> list
>       REGTESTS: mark proxy_protocol_random_fail as broken
>
> ---
>
>

Reply via email to