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

---

Reply via email to