Hi,
HAProxy 2.4-dev4 was released on 2020/12/21. It added 33 new commits
after version 2.4-dev3.
In this traditionally calm period, there aren't that many changes, except
a lot of bug fixes. Actually 3 bugs in dev3 managed to cause crashes on
haproxy.org, this hadn't happened in a very long time. And I'm glad we're
running development versions there because all 3 could be quickly spotted
and fixed :-)
Fixes and cleanups aside, there are still two new features that landed in
dev4:
- the cache is now aware of the number of entries of a similar object
and will currently limit itself to 10 variants of an object so that
we don't fill the whole cache with incompatible variants of a single
object ;
- there is a new "opentracing" filter, entirely hosted in the contrib
directory. It can be built in haproxy by passing USE_OT=1 to the
makefile. Do not ask me how it works, I'm really ignorant of this,
instead, please have a look at the nice and detailed documentation
that my coworker Miroslav has added in that directory (there's even
some doc for developers who want to play with the code). It requires
a C wrapper for opentracing and the opentrafic lib itself but all of
this is explained there. I could verify that it did properly build
even with a cross-compiler before committing it :-)
This last point made me think that we should probably split the contrib
directory into two or 3 parts, because while initially it used to serve
as a place to store non-core stuff, now it contains a bit of everything.
What I'm noticing nowadays is that we can cut it into several parts:
- those which are examples, scripts or tools to be used in complement
with haproxy. We can find the netsnmp monitoring, selinux policies,
plug_qdisc, systemd setup, wireshark dissectors, SPOA examples, etc.
- those that are tools for the developers, like debug, trace, tcploop,
hpack, syntax-highlight, release-estimator, etc.
- those which are add-ons to be linked with the haproxy executable but
which depend on third-party libraries or which are used to interface
with other products but not plain standards. There we have the device
detection engines, prometheus and opentracing addons.
For the first category, I don't think we should change anything.
I think that we should take the second category out of contrib and put
it into "tools" or something like this. We don't need to enforce too many
rules there, each developer is autonomous and will decide to rely on
existing code or not, etc.
For the third category, it would make sense to move this to a new directory
called "addons" or something like this, to make it clear that this code is
optional and will be linked with the haproxy executable. Then we should
standarize the way to build this, so that each of these sub-projects can
include a makefile and be build as part of the main makefile. This would
simplify a lot of stuff. We could then imagine passing the list of addons
in a single variable and be done with it (and even use the reserved name
"all" to include them all). And we'd then move the existing device
detection code src/{51,da,wurfl}.c to their respective directories, making
the maintenance much cleaner in these areas since we could even imagine
having a MAINTAINERS file and a README inside these directory to help
users find what they need. Maybe we should even reserve a section in the
"-vv" output to list all the addons so that regtests could be conditionned
on them in a more generic way.
Just my two cents, I'm interested in anyone's opinion or suggestion here.
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 :
Baptiste Assmann (1):
BUG/MINOR: dns: SRV records ignores duplicated AR records
Christopher Faulet (8):
BUG/MEDIUM: lb-leastconn: Reposition a server using the right eweight
BUG/MEDIUM: mux-h1: Fix a deadlock when a 408 error is pending for a
client
BUG/MINOR: http: Establish a tunnel for all 2xx responses to a CONNECT
BUG/MINOR: mux-h1: Don't set CS_FL_EOI too early for protocol upgrade
requests
BUG/MEDIUM: http-ana: Never for sending data in TUNNEL mode
CLEANUP: mux-h2: Rename h2s_frt_make_resp_data() to be generic
CLEANUP: mux-h2: Rename h2c_frt_handle_data() to be generic
BUG/MEDIUM: mux-h1: Handle h1_process() failures on a pipelined request
Ilya Shipitsin (6):
BUILD: SSL: fine guard for SSL_CTX_add_server_custom_ext call
CI: cirrus: drop CentOS 6 builds
BUILD: ssl: fine guard for SSL_CTX_get0_privatekey call
CLEANUP: assorted typo fixes in the code and comments
DOC: assorted typo fixes in the documentation
CI: codespell: whitelist "te" and "nd" words
Jan Wagner (1):
DOC: fix "smp_size" vs "sample_size" in "log" directive arguments
Miroslav Zagorac (4):
MINOR: vars: replace static functions with global ones
MINOR: opentracing: add ARGC_OT enum
CONTRIB: opentracing: add the OpenTracing filter
DOC: opentracing: add the OpenTracing filter section
Remi Tricot-Le Breton (4):
BUG/MAJOR: cache: Crash because of disabled entry not removed from the
tree
MEDIUM: cache: Add a secondary entry counter and insertion limitation
MEDIUM: cache: Avoid going over duplicates lists too often
MINOR: cache: Add a max-secondary-entries cache option
William Lallemand (1):
BUG/MEDIUM: ssl/crt-list: bad behavior with "commit ssl cert"
Willy Tarreau (8):
BUILD: Makefile: have "make clean" destroy .o/.a/.s in contrib subdirs as
well
REGTESTS: make use of HAPROXY_ARGS and pass -dM by default
CLEANUP: debug: mark the RNG's seed as unsigned
CONTRIB: halog: fix build issue caused by %L printf format
CONTRIB: halog: mark the has_zero* functions unused
CONTRIB: halog: fix signed/unsigned build warnings on counts and
timestamps
CONTRIB: debug: address "poll" utility build on non-linux platforms
BUILD: plock: remove dead code that causes a warning in gcc 11
---