Hi,

HAProxy 2.2-dev7 was released on 2020/05/05. It added 205 new commits
after version 2.2-dev6.

The most visible changes in this version is the rework of the health checks
that was started by Gaƫtan and completed by Christopher. I'll certainly say
a number of stupidities about all this so I won't enter into details, but the
main points to be aware of is that the health checks which for 18 years have
been the ugliest part of the internals have now become smart. They are now
all internally implemented on top of tcp-check rules, and that these ones
were improved to satisfy the new requirements. For now all this new stuff is
not yet fully exploited beyond what is needed for the checks but we can hope
a lot of new cool stuff in a near future.

In addition, HTTP checks now run over HTX and employ the muxes so they can
now run over HTTP/1 and HTTP/2, and can separately set headers and body.
All the elements may be extracted and processed for advanced checks. You
should refer to the documentation to figure all the details. Please beware
that the check configuration rules are subject to change a little bit before
the release but the main principle is already here.

Just before releasing I noticed one minor regtest failure on openssl 1.0.2
only, that I bisected to commit df38f88 ("MINOR: checks: Improve log message
of tcp-checks on success") (which sadly, doesn't have any commit message).
This failure is only about the logged message on check failure. I don't see
any obvious reason why this commit would only affect openssl 1.0.2 so I
guess the issue is somewhere else, and likely not much important.

Aside this there were a number of code cleanups, regtest additions and doc
updates. Among the other pending things I'm aware of is the support for
syslog over TCP and that should be all.

My personal feeling is that the rate of changes is still a bit high this
late in the cycle and that the level of issues remains high as well, and
I would appreciate it when it starts to calm down. I wouldn't be surprized
if we'd release in early June rather than end of May. But there's no rush
and that doesn't make a huge difference, provided it allows us to have an
excellent 2.2.

If you have painful checks in your configs, or some unusual ones, your
feedback will be welcome. If you're facing limitations with your HTTP
checks, it might be the right moment to give this one a try.

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
   Sources          : http://www.haproxy.org/download/2.2/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.2/src/CHANGELOG
   Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/

Willy
---
Complete changelog :
Baptiste Assmann (3):
      MINOR: ist: add istadv() function
      MINOR: ist: add istissame() function
      MINOR: istbuf: add ist2buf() function

Christopher Faulet (136):
      BUG/MINOR: http-ana: Throw a 500 error if after-response ruleset fails on 
errors
      BUG/MINOR: check: Update server address and port to execute an external 
check
      MINOR: mini-clist: Add functions to iterate backward on a list
      MINOR: checks: Add a way to send custom headers and payload during http 
chekcs
      BUG/MINOR: checks: Respect the no-check-ssl option
      BUG/MEDIUM: server/checks: Init server check during config validity check
      CLEANUP: checks: Don't export anymore init_check and 
srv_check_healthcheck_port
      BUG/MINOR: checks: Forbid tcp-check lines in default section as documented
      MINOR: checks: Stop xform buffers to null-terminated string for tcp-check 
rules
      MINOR: checks: Simplify functions to get step id and comment
      MEDIUM: proxy/checks: Register a keyword to parse tcp-check rules
      MEDIUM: checks: Add implicit tcp-check connect rule
      MAJOR: checks: Refactor and simplify the tcp-check loop
      MINOR: checks: Add the sni option for tcp-check connect rules
      MINOR: checks: Add the via-socks4 option for tcp-check connect rules
      MINOR: checks: Add the alpn option for tcp-check connect rules
      MINOR: ssl: Export a generic function to parse an alpn string
      MINOR: checks: Add the default option for tcp-check connect rules
      MINOR: checks: Add the addr option for tcp-check connect rule
      MEDIUM: checks: Support expression to set the port
      MEDIUM: checks: Support log-format strings for tcp-check send rules
      MINOR: log: Don't depends on a stream to process samples in log-format 
string
      MINOR: log: Don't systematically set LW_REQ when a sample expr is added
      MEDIUM: checks: Add a shared list of tcp-check rules
      MINOR: sample: add htonl converter
      MINOR: sample: add cut_crlf converter
      MINOR: sample: add ltrim converter
      MINOR: sample: add rtrim converter
      MINOR: checks: Use a name for the healthcheck status enum
      MINOR: checks: Add option to tcp-check expect rules to customize error 
status
      MINOR: checks: Merge tcp-check comment rules with the others at config 
parsing
      MINOR: checks: Add a sample fetch to extract a block from the input check 
buffer
      MEDIUM: checks: Add on-error/on-success option on tcp-check expect rules
      MEDIUM: checks: Add status-code sample expression on tcp-check expect 
rules
      MINOR: checks: Relax the default option for tcp-check connect rules
      MEDIUM: checks: Add a list of vars to set before executing a tpc-check 
ruleset
      MINOR: checks: Export the tcpcheck_eval_ret enum
      MINOR: checks: Use dedicated function to handle onsuccess/onerror messages
      MINOR: checks: Support custom functions to eval a tcp-check expect rules
      MEDIUM: checks: Implement redis check using tcp-check rules
      MEDIUM: checks: Implement ssl-hello check using tcp-check rules
      MEDIUM: checks: Implement smtp check using tcp-check rules
      MEDIUM: checks: Implement postgres check using tcp-check rules
      MEDIUM: checks: Implement MySQL check using tcp-check rules
      MEDIUM: checks: Implement LDAP check using tcp-check rules
      MEDIUM: checks: Implement SPOP check using tcp-check rules
      MINOR: server/checks: Move parsing of agent keywords in checks.c
      MINOR: server/checks: Move parsing of server check keywords in checks.c
      MEDIUM: checks: Implement agent check using tcp-check rules
      REGTEST: Adapt regtests about checks to recent changes
      MINOR: Produce tcp-check info message for pure tcp-check rules only
      MINOR: checks: Add an option to set success status of tcp-check expect 
rules
      MINOR: checks: Improve log message of tcp-checks on success
      MINOR: proxy/checks: Move parsing of httpchk option in checks.c
      MINOR: proxy/checks: Move parsing of tcp-check option in checks.c
      MINOR: proxy/checks: Register a keyword to parse http-check rules
      MINOR: proxy/checks: Move parsing of external-check option in checks.c
      MINOR: proxy/checks: Register a keyword to parse external-check rules
      MEDIUM: checks: Use a shared ruleset to store tcp-check rules
      MINOR: checks: Use an indirect string to represent the expect matching 
string
      MINOR: checks: Introduce flags to configure in tcp-check expect rules
      MINOR: standard: Add my_memspn and my_memcspn
      MINOR: checks: Add a reverse non-comment rule iterator to get last rule
      MAJOR: checks: Implement HTTP check using tcp-check rules
      MINOR: checks: Make resume conditions more explicit in tcpcheck_main()
      MINOR: connection: Add macros to know if a conn or a cs uses an HTX mux
      MEDIUM: checks: Refactor how data are received in tcpcheck_main()
      MINOR: checks/obj_type: Add a new object type for checks
      BUG/MINOR: obj_type: Handle stream object in obj_base_ptr() function
      MINOR: checks: Use the check as origin when a session is created
      MINOR: checks: Add a mux proto to health-check and tcp-check connect rule
      MINOR: connection: Add a function to install a mux for a health-check
      MAJOR: checks: Use the best mux depending on the protocol for health 
checks
      MEDIUM: checks: Implement default TCP check using tcp-check rules
      MINOR: checks: Remove unused code about pure TCP checks
      CLEANUP: checks: Reorg checks.c file to be more readable
      REGTEST: Fix reg-tests about health-checks to adapt them to recent changes
      MINOR: ist: Add a function to retrieve the ist pointer
      MINOR: checks: Use ist API as far as possible
      BUG/MEDIUM: checks: Be sure to subscribe for sends if outgoing data 
remains
      MINOR: checks: Use a tree instead of a list to store tcp-check rulesets
      BUG/MINOR: checks: Send the right amount of outgoing data for HTTP checks
      REGTEST: Add scripts to test based tcp-check health-checks
      Revert "MEDIUM: checks: capture groups in expect regexes"
      DOC: Add documentation about comments for tcp-check and http-check 
directives
      DOC: Fix the tcp-check and http-check directives layout
      BUG/MEDIUM: checks: Use the mux protocol specified on the server line
      MINOR: checks: Support mux protocol definition for tcp and http health 
checks
      BUG/MINOR: mux-fcgi: Be sure to have a connection as session's origin to 
use it
      MINOR: checks: Support list of status codes on http-check expect rules
      BUG/MEDIUM: checks: Unsubscribe to mux events when a conn-stream is 
destroyed
      REGTEST: Add a script to validate agent checks
      BUG/MINOR: server: Fix server_finalize_init() to avoid unused variable
      BUG/MEDIUM: checks: unsubscribe for events on the old conn-stream on 
connect
      BUG/MINOR: checks: Only use ssl_sock_is_ssl() if compiled with SSL support
      BUG/MINOR: checks/server: use_ssl member must be signed
      BUG/MEDIUM: sessions: Always pass the mux context as argument to destroy 
a mux
      BUG/MEDIUM: checks: Destroy the conn-stream before the session
      BUG/MINOR: checks: Fix PostgreSQL regex on the authentication packet
      MINOR: checks: Support HTTP/2 version (without '.0') for http-check send 
rules
      MINOR: checks: Use ver keyword to specify the HTTP version for http checks
      BUG/MINOR: checks: Remove wrong variable redeclaration
      BUG/MINOR: checks: Properly handle truncated mysql server messages
      CLEANUP: checks: Remove unused code when ldap server message is parsed
      MINOR: checks: Make the use of the check's server more explicit on connect
      BUG/MINOR: checks: Avoid incompatible cast when a binary string is parsed
      BUG/MINOR: checks: Remove bad call to free() when an expect rule is parsed
      BUG/MINOR: checks: Don't lose warning on proxy capability
      BUG/MINOR: checks: Set the output buffer length before calling 
parse_binary()
      MINOR: http-htx: Export functions to update message authority and host
      MINOR: checks: Don't support multiple host header for http-check send rule
      MINOR: checks: Skip some headers for http-check send rules
      MINOR: checks: Keep the Host header and the request uri synchronized
      CLEANUP: checks: Fix checks includes
      DOC: Fix send rules in the http-check connect example
      DOC: Add more info about request formatting in http-check send description
      REGTEST: http-rules: Require PCRE or PCRE2 option to run map_redirect 
script
      BUG/MEDIUM: mux-fcgi: Return from detach if server don't keep the 
connection
      BUG/MEDIUM: mux_fcgi: Free the FCGI connection at the end of 
fcgi_release()
      BUG/MEDIUM: mux-fcgi: Fix wrong test on FCGI_CF_KEEP_CONN in fcgi_detach()
      BUG/MEDIUM: h1: Don't compare host and authority if only h1 headers are 
parsed
      BUG/MINOR: sample: Set the correct type when a binary is converted to a 
string
      MEDIUM: checks/http-fetch: Support htx prefetch from a check for HTTP 
samples
      DOC: Document the log-format parameter for tcp-check send/send-binary 
rules
      MINOR: checks: Add support of payload-based sample fetches
      MINOR: checks: Add support of be_id, be_name, srv_id and srv_name sample 
fetches
      MINOR: checks: Add support of server side ssl sample fetches
      MINOR: checks: Add support of HTTP response sample fetches
      MINOR: http-htx: Support different methods to look for header names
      MINOR: checks: Set by default expect rule status to UNKNOWN during parsing
      BUG/MINOR: checks: Support multiple HTTP expect rules
      REGTEST: checks: Fix sync condition for agent-check
      MEDIUM: checks: Support matching on headers for http-check expect rules
      BUG/MINOR: da: Fix HTX message prefetch
      BUG/MINOR: wurfl: Fix HTX message prefetch
      BUG/MINOR: 51d: Fix HTX message prefetch

Damien Claisse (1):
      MINOR: log: Add "Tu" timer

Dragan Dosen (1):
      BUG/MEDIUM: ssl: fix the id length check within 
smp_fetch_ssl_fc_session_id()

Emmanuel Hocdet (1):
      MINOR: ssl: add ssl-skip-self-issued-ca global option

Gaetan Rivet (21):
      MINOR: server: respect warning and alert semantic
      BUG/MINOR: checks: chained expect will not properly wait for enough data
      MINOR: checks: Use an enum to describe the tcp-check rule type
      MINOR: checks: Simplify connection flag parsing in tcp-check connect
      MEDIUM: checks: rewind to the first inverse expect rule of a chain on new 
data
      MINOR: checks: simplify tcp expect config parser
      MINOR: checks: add min-recv tcp-check expect option
      MINOR: checks: add linger option to tcp connect
      MINOR: checks: define a tcp expect type
      MEDIUM: checks: rewrite tcp-check expect block
      MINOR: checks: add rbinary expect match type
      MEDIUM: checks: capture groups in expect regexes
      MINOR: checks: Don't use a static tcp rule list head
      MEDIUM: checks: Use a non-comment rule iterator to get next rule
      MINOR: checks: Set the tcp-check rule index during parsing
      MINOR: checks: define tcp-check send type
      MINOR: checks: define a tcp-check connect type
      MEDIUM: checks: Associate a session to each tcp-check healthcheck
      MINOR: checks/vars: Add a check scope for variables
      MEDIUM: checks: Parse custom action rules in tcp-checks
      MINOR: checks: Add support to set-var and unset-var rules in tcp-checks

Ilya Shipitsin (3):
      CI: run weekly OpenSSL "no-deprecated" builds
      CLEANUP: log: fix comment of parse_logformat_string()
      CI: cirrus-ci: remove reg-tests/checks/tcp-check-ssl.vtc on CentOS 6

Jerome Magnin (4):
      BUG/MINOR: ssl: default settings for ssl server options are not used
      MINOR: config: add a global directive to set default SSL curves
      DOC: option logasap does not depend on mode
      DOC: give a more accurate description of what check does

Joseph C. Sible (1):
      MINOR: lua: allow changing port with set_addr

Olivier Doucet (1):
      DOC: Improve documentation on http-request set-src

Olivier Houchard (1):
      BUG/MEDIUM: http-ana: Handle NTLM messages correctly.

Tim Duesterhus (1):
      MINOR: version: Show uname output in display_version()

William Dauchy (2):
      BUG/MEDIUM: connections: force connections cleanup on server changes
      CLEANUP: connections: align function declaration

William Lallemand (7):
      MINOR: ssl/cli: disallow SSL options for directory in 'add ssl crt-list'
      MINOR: ssl/cli: restrain certificate path when inserting into a directory
      DOC: internals: update the SSL architecture schema
      MINOR: contrib: make the peers wireshark dissector a plugin
      REGTEST: ssl: test the client certificate authentication
      REGTEST: ssl: remove curl from the "add ssl crt-list" test
      REGTEST: ssl: improve the "set ssl cert" test

Willy Tarreau (22):
      BUG/MINOR: tools: fix the i386 version of the div64_32 function
      BUG/MINOR: mux-fcgi/trace: fix wrong set of trace flags in 
fcgi_strm_add_eom()
      BUG/MINOR: http: make url_decode() optionally convert '+' to SP
      MEDIUM: memory: make pool_gc() run under thread isolation
      BUG/MEDIUM: mux-h1: make sure we always have a timeout on front 
connections
      BUG/MEDIUM: capture: capture-req/capture-res converters crash without a 
stream
      BUG/MEDIUM: capture: capture.{req,res}.* crash without a stream
      BUG/MEDIUM: http: the "http_first_req" sample fetch could crash without a 
steeam
      BUG/MEDIUM: http: the "unique-id" sample fetch could crash without a 
steeam
      CLEANUP: http: add a few comments on certain functions' assumptions about 
streams
      BUG/MEDIUM: sample: make the CPU and latency sample fetches check for a 
stream
      CLEANUP: ssl: silence a build warning when threads are disabled
      BUG/MEDIUM: listener: mark the thread as not stuck inside the loop
      MINOR: threads: export the POSIX thread ID in panic dumps
      BUG/MINOR: debug: properly use long long instead of long for the thread ID
      BUG/MEDIUM: shctx: really check the lock's value while waiting
      BUG/MEDIUM: shctx: bound the number of loops that can happen around the 
lock
      MINOR: stream: report the list of active filters on stream crashes
      BUG/MINOR: threads: fix multiple use of argument inside HA_ATOMIC_CAS()
      BUG/MINOR: threads: fix multiple use of argument inside 
HA_ATOMIC_UPDATE_{MIN,MAX}()
      DOC: update intro.txt for 2.2
      DOC: intro: add a contacts section

---

Reply via email to