Hi,

HAProxy 2.4-dev18 was released on 2021/05/01. It added 51 new commits
after version 2.4-dev17.

It seems that it's been quite a calm week in terms of development, with
most of the time having been spent on old bugs that are not even *that*
serious. Most of them were corner cases occasionally causing peers to be
desynchronized on reload. These were rare enough to have remained unnoticed
since 1.6 for some of them, but some users reloading extremely frequently
managed to trigger them in visible ways and Emeric finally managed to get
rid of all of them.

A new URI normalizer "percent-decode-unreserved" was added, the
"default-path" directive was implemented to chdir into a configurable
path for each config file (absolute, relative to the config file,
relative to its parent) in order to ease packaging of external files
(maps, certs, Lua, errorfiles etc).

A new minor but convenient CLI feature was added, the ability to atomically
replace a map or ACL. We already had everything available internally, it
only had no CLI equivalent, and that was causing annoying limitations to
the ingress controller. So it's now possible to create a new version of a
file, add values to that specific version, then commit it once complete
without leaving any single period with an incomplete map.

Code cleanup has continued in various areas (channel, config parser, Lua,
HTX), and doc cleanups continued as well in the config manual.

I'm almost done with the changes I had in my queue, only the config defines
are left pending. I know that Christopher still has a few patches that we
need to discuss, and that Amaury is finishing the mechanism to gracefully
close idle client connections on reload, so both should be ready next week.

I'm thinking about doing a final pass on the "help" text on the CLI to
re-align it and make it readable again. We long tried to keep the 80-column
format but it's already broken *and* ugly. We can probably push the limit
slightly further but make it readable again. Or we may even shorten the
help description a bit.

Another point that I'd like to clean up is the format of the ALERT/WARNING/
NOTICE messages emitted on stderr. They're followed by numbers that nobody
knows what they correspond to. Now I know since I went into the code to see
that but I'm sure that one month from now I'll have forgotten. And I'm
pretty sure nobody else knows either. Hint: it's the day of year and the
time. I was thinking about changing that output format to present only the
message level and the PID since the date is usually present in whatever log
this lands into. These were added 20 years ago when haproxy was mostly used
as a debugging tool in foreground, to ease having a quick glace at a server's
console... Something tells me that use cases have changed since then :-)

If you're relying on them or if you have some reasonable suggestion about
a convenient variant, feel free to propose, but quickly (and I will not go
into a bikeshedding discussion).

It was also mentioned that for some use cases it could be convenient to have
the process' start time and uptime expressed in milliseconds or microseconds.
I initially thought about adding an extra field to present these extensions
but I'm rolling back on this idea because nothing guarantees they will be
dumped at the same moment as the field they extend. So I'm left with 3
possibilities on which I'd like to collect opinions:
  - add new fields "Uptime_usec", "Start_time_usec" which dump these info
    as 64-bit integers with the micro-second precision ;

  - modify existing fields to dump them as floats, at the risk of breaking
    existing parsers which wouldn't like to see a dot in a value, though
    Start_time_sec was added in 2.4-dev and can still be changed ;

  - pass an option to "show info" to automatically append the sub-second
    precision but leave default format as-is

If we'd go for the last option, maybe the approach would instead be to say
that the parser supports float values, and that we could over time improve
the precision of other measures (like connection rates) so I tend to think
it wouldn't be that bad an investment for the long term. Ideas welcome as
usual.

I think that the following weeks will be mostly focused on doc and final
code cleanups (and likely on last-minute fixes, as happens with every
version). So unless we meet some last-minute painful bugs that require
heavy head-scratching, or we figure we've forgotten something really
important, I think it's reasonable to expect a final release any time
between ~10 days from now and the end of the month.

If you haven't started testing 2.4-dev yet, I'd encourage you to do so
now, at least to verify that it matches your use cases and expectations,
and still have an opportunity to report any concern before the release.

In the mean time, have a nice week-end!

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 :
Alex (2):
      DOC: general: fix white spaces for HTML converter
      DOC: general: fix example in set-timeout

Amaury Denoyelle (6):
      BUG/MINOR: cpuset: move include guard at the very beginning
      BUG/MAJOR: fix build on musl with cpu_set_t support
      BUG/MEDIUM: cpuset: fix build on MacOS
      MINOR: server: fix doc/trace on lb algo for dynamic server creation
      REGTESTS: server: fix cli_add_server due to previous trace update
      BUILD: compiler: do not use already defined __read_mostly on dragonfly

Christopher Faulet (12):
      BUG/MINOR: mux-fcgi: Don't send normalized uri to FCGI application
      REORG: htx: Inline htx functions to add HTX blocks in a message
      BUG/MINOR: htx: Preserve HTX flags when draining data from an HTX message
      MEDIUM: htx: Refactor htx_xfer_blks() to not rely on hdrs_bytes field
      CLEANUP: htx: Remove unsued hdrs_bytes field from the HTX start-line
      BUG/MINOR: mux-h2: Don't encroach on the reserve when decoding headers
      MEDIUM: http-ana: handle read error on server side if waiting for response
      MINOR: htx: Limit length of headers name/value when a HTX message is 
dumped
      BUG/MINOR: applet: Notify the other side if data were consumed by an 
applet
      BUG/MINOR: hlua: Don't consume headers when starting an HTTP lua service
      BUG/MEDIUM: mux-h2: Handle EOM flag when sending a DATA frame with 
zero-copy
      CLEANUP: channel: No longer notify the producer in co_skip()/co_htx_skip()

Emeric Brun (8):
      BUG/MEDIUM: peers: initialize resync timer to get an initial full resync
      BUG/MEDIUM: peers: register last acked value as origin receiving a resync 
req
      BUG/MEDIUM: peers: stop considering ack messages teaching a full resync
      BUG/MEDIUM: peers: reset starting point if peers appears longly 
disconnected
      BUG/MEDIUM: peers: reset commitupdate value in new conns
      BUG/MEDIUM: peers: re-work updates lookup during the sync on the fly
      BUG/MEDIUM: peers: reset tables stage flags stages on new conns
      MINOR: peers: add informative flags about resync process for debugging

Ilya Shipitsin (1):
      CLEANUP: assorted typo fixes in the code and comments

Remi Tricot-Le Breton (1):
      BUG/MINOR: ssl: ssl_sock_prepare_ssl_ctx does not return an error code

Tim Duesterhus (4):
      DOC: Fix indentation for `path-strip-dot` normalizer
      DOC: Fix RFC reference for the percent-to-uppercase normalizer
      DOC: Add RFC references for the path-strip-dot(dot)? normalizers
      MINOR: uri_normalizer: Add a `percent-decode-unreserved` normalizer

Willy Tarreau (17):
      CLEANUP: cfgparse: de-uglify early file error handling in readcfgfile()
      MINOR: config: add a new "default-path" global directive
      BUG/MEDIUM: time: fix updating of global_now upon clock drift
      CLEANUP: freq_ctr: make arguments of freq_ctr_total() const
      CLEANUP: hlua: rename hlua_appctx* appctx to luactx
      REGTESTS: add minimal CLI "add map" tests
      DOC: management: move "set var" to the proper place
      CLEANUP: map: slightly reorder the add map function
      MINOR: map: get rid of map_add_key_value()
      MINOR: map: show the current and next pattern version in "show map"
      MINOR: map/acl: add the possibility to specify the version in "show 
map/acl"
      MINOR: pattern: support purging arbitrary ranges of generations
      MINOR: map/acl: add the possibility to specify the version in "clear 
map/acl"
      MINOR: map/acl: add the "prepare map/acl" CLI command
      MINOR: map/acl: add the "commit map/acl" CLI command
      MINOR: map/acl: make "add map/acl" support an optional version number
      CLEANUP: map/cli: properly align the map/acl help

---

Reply via email to