Dear Team,

can we address at least #1112, #1119 before 2.4 is released ?

пт, 9 апр. 2021 г. в 20:52, Willy Tarreau <w...@1wt.eu>:

> Hi,
>
> HAProxy 2.4-dev16 was released on 2021/04/09. It added 37 new commits
> after version 2.4-dev15.
>
> This one is particularly calm, I even hesitated between making it or not.
> But there are a few updates that may affect configuration so I figured it
> was better to emit a new one.
>
> A large part of the patch is essentially caused by the renaming of a few
> atomic ops that were causing some confusion. Now HA_ATOMIC_FOO() will be
> a void statement so that if you want to read from the location you use
> either HA_ATOMIC_FETCH_FOO() or HA_ATOMIC_FOO_FETCH() (pre- or post-
> fetch).  The output code shouldn't change however, and given that it was
> essentially sed-work, as soon as it started to work I was confident in it.
>
> A few changes in the FD code to clean up that messy fdtab structure cause
> another noticeable part of the diff. I obviously managed to break
> something once (hence the BUG/MAJOR fix) but now it's OK. Mistakes at this
> level are never forgiving anyway, either it fully works or it fully fails.
>
> The nice part that makes me think we're progressively approaching what
> could look like the release is that Emeric finally performed the few
> changes in the DNS and log code. For the DNS, the TCP servers in the
> "resolvers" section do not need to be referred to as "server" anymore,
> they are "nameserver" just like the other ones, except that you can
> mention "tcp@" in front of their address to force them to be TCP
> nameservers. No more configuration mixing there. And for the log servers,
> similarly, now you can specify "tcp@" in front of an address on a "log"
> statement, and it will automatically create the ring for you with default
> settings. Previously it was still required to manually declare the ring, I
> found this too cumbersome, and Emeric figured how to handle this.
>
> The rest is essentially small bug fixes and code cleanups from a bunch
> of contributors.
>
> Now speaking about the pending stuff I'm still aware of:
>
>   - I'd like to rename LIST_ADD/LIST_ADDQ to LIST_INSERT/LIST_APPEND
>     (or maybe LIST_ADD_HEAD/LIST_ADD_TAIL ?). I've already been trapped
>     in using LIST_ADD() when I wanted to append and I know the confusion
>     is easy. That's just a quick "sed" once we know what we want.
>
>   - I identified some undesired cache line sharing around some pointers,
>     that slow down FD operations and possibly other stuff. I see how to
>     arrange this, it just needs to be done (and tested on MacOS since we
>     noticed once that section names differ there).
>
>   - we've had a recent discussion about the opportunity to import SLZ
>     and to always enable compression by default using it if no other lib
>     is specified. I think it could be useful for some users (especially
>     those for whom memory usage is important). I'll have a look at this,
>     maybe next week, that's only two files to include.
>
>   - regarding the quick discussion two weeks ago about optimization for
>     modern ARM CPUs, I saw that one solution could be to build using
>     gcc 10.2+ which outline their atomics into functions. That's ugly
>     but the performance impact is small (about 3% in my tests), while
>     it provides a tremendous improvement for many-core machines. But if
>     we rely on this do this I'll probably add two new CPU entries to
>     force to use only an old one (v8.0) or only a modern one (v8.2) so
>     that those who build themselves can shave the last few percent.
>
>   - no progress made on the default-path, but we'll have to reread the
>     issue to figure the best choice. I'd like to see it done for the
>     release to ease config packaging and deployments.
>
>   - I'd like to add a warning when we detect that nbthreads is forced
>     to a higher value than the number of bound CPUs. It's not the first
>     time that I see this in a config and the result is catastrophic, so
>     a warning is deserved. It just needs to be set at the right place.
>
>   - the shared memory pools cleanup must be completed before the release,
>     as the situation is not good for those with a slow malloc() function
>     at the moment. I know what to do, I just need to stay focused on it.
>
>   - the date & time cleanups would be nice to have for the long term and
>     are not particularly hard to do so better finish them before 2.4.
>
>   - Tim sent a patch series to implement URI normalization. That's
> something
>     I'd like to see merged if possible, as it may improve security for some
>     users, and at least improve reliability for others.
>
>   - I also noticed Alek's mjson import with a new converter, but didn't
>     have a look yet. Maybe it will open opportunities for more converters,
>     that's definitely something which deserves being considered before the
>     release.
>
>   - Amaury has almost finished some work to improve auto-binding on NUMA
>     systems. Right now using a dual-socket machine is common an painful at
>     the same time. Having threads enabled by default doesn't improve the
>     situation there at all due to the slow communication between the CPUs.
>     In his tests he could confirm significant gains by binding only to the
>     CPUs of a single socket by default if nothing is specified. I'd like
>     to see this merged as well. It also opens opportunities for refining
>     later if needed.
>
>   - Christopher has some pending fixes for abortonclose that we'd rather
>     merge early to observe any possibly undesired side effect.
>
>   - I had an idea to experiment with regarding the ability to close idle
>     frontend connections on reload. It should be relatively easy to do
>     and could solve a long-lasting problem those with long connections
>     suffer from. If done in time and if it works well, maybe we could
>     even consider backporting it.
>
>   - and I still would like to add a few macros for the .if/.endif in the
>     config file, but that's not critical.
>
> As long as we can continue with fixes and low-risk stuff like this, I
> think we'll be good for the initial plans of end of May. If we complete
> all of this earlier, I'm even fine with anticipating the release a little
> bit (but I doubt it).
>
> So far, so good. Have a happy week-end, and don't forget to test and report
> your concerns or any improvement you'd notice.
>
> 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 :
> Christopher Faulet (3):
>       MINOR: No longer rely on deprecated sample fetches for predefined
> ACLs
>       MINOR: acl: Add HTTP_2.0 predefined macro
>       BUG/MINOR: hlua: Detect end of request when reading data for an HTTP
> applet
>
> Emeric Brun (5):
>       MINOR: server/bind: add support of new prefixes for addresses.
>       MINOR: log: register config file and line number on log servers.
>       MEDIUM: log: support tcp or stream addresses on log lines.
>       BUG/MEDIUM: log: fix config parse error logging on stdout/stderr or
> any raw fd
>       MEDIUM: resolvers: add support of tcp address on nameserver line.
>
> Miroslav Zagorac (1):
>       MINOR: opentracing: register config file and line number on log
> servers
>
> Thayne McCombs (1):
>       BUG/MINOR: tools: fix parsing "us" unit for timers
>
> Tim Duesterhus (7):
>       MINOR: ist: Add `istappend(struct ist, char)`
>       MINOR: ist: Add `istshift(struct ist*)`
>       MINOR: ist: Add `istsplit(struct ist*, char)`
>       MINOR: ist: Rename istappend() to __istappend()
>       CLEANUP: htx: Make http_get_stline take a `const struct`
>       CLEANUP: ist: Remove unused `count` argument from `ist2str*`
>       CLEANUP: Remove useless malloc() casts
>
> Willy Tarreau (20):
>       CLEANUP: dev/flags: remove useless test in the stdin number parser
>       CLEANUP: fd: remove FD_POLL_DATA and FD_POLL_STICKY
>       MEDIUM: fd: prepare FD_POLL_* to move to bits 8-15
>       MEDIUM: fd: merge fdtab[].ev and state for FD_EV_* and FD_POLL_*
> into state
>       MINOR: fd: move .linger_risk into fdtab[].state
>       MINOR: fd: move .cloned into fdtab[].state
>       MINOR: fd: move .initialized into fdtab[].state
>       MINOR: fd: move .et_possible into fdtab[].state
>       MINOR: fd: move .exported into fdtab[].state
>       MINOR: fd: implement an exclusive syscall bit to remove the ugly
> "log" lock
>       MINOR: cli/show-fd: slightly reorganize the FD status flags
>       MINOR: atomic/arm64: detect and use builtins for the double-word CAS
>       CLEANUP: atomic: add an explicit _FETCH variant for add/sub/and/or
>       CLEANUP: atomic: make all standard add/or/and/sub operations return
> void
>       CLEANUP: atomic: add a fetch-and-xxx variant for common operations
>       CLEANUP: atomic: add HA_ATOMIC_INC/DEC for unit increments
>       CLEANUP: atomic/tree-wide: replace single increments/decrements with
> inc/dec
>       CLEANUP: atomic: use the __atomic variant of BTS/BTR on modern
> compilers
>       MINOR: atomic: implement native BTS/BTR for x86
>       BUG/MAJOR: fd: switch temp values to uint in fd_stop_both()
>
> ---
>
>

Reply via email to