HAProxy 2.0-dev4 was released on 2019/05/22. It added 83 new commits
after version 2.0-dev3.

This release completes the integration of a few pending features and
the ongoing necessary cleanups before 2.0.

A few bugs were addressed in the way to deal with certain connection
errors, but overall there was nothing dramatic, which indicates we're
stabilizing (it has been running flawlessly for 1 week now on

There are a few new features that were already planned. One is the support
of event ports as an alternate (read "faster") polling method on Solaris,
by Manu. Another one is the replacement of the slow stream processing by
a better and more reliable watchdog. It currently only supports Linux
however, but a FreeBSD port seems reasonably easy to do. It will detect
inter-thread deadlocks as well as tasks stuck looping in an endless list
which has been corrupted, and will provoke a panic, dumping all threads
states, then doing an abort (in hope to get a core). This will allow the
problem to be immediately detected and even the service to be automatically
restarted when the service manager supports it. It's also possible to
consult all threads' states on the CLI using "show threads".

As previously discussed we have also deprecated the very old req* and rsp*
directives with warnings suggesting what to use instead. They still work
but the goal is to kill them in 2.1, so there's no rush to convert your
configs given that 2.0 is LTS but you will be encouraged to progressively
adapt your future configs. Likewise "option forceclose" now warns and
"resolution_pool_size" is an error (it never existed in any release).

WURFL is now HTX-aware. There are some new developer-friendly commands
on the CLI when built with -DDEBUG_DEV, they allow to inspect memory
areas or send signals, which is convenient during development. It should
have been done earlier!

Cirrus-CI is enabled to test builds on FreeBSD. To be honest at this point
it's still not completely clear to me how to fully use it as their interface
is a bit limited but it has the merit of existing. It doesn't build as often
as Travis-CI, and it decided to build the last fix after I tagged this
release, showing that apparently there's still a build error on FreeBSD,
that I don't understand for now.

Lots of code cleanups were done, and some old build options were refreshed
to match their equivalent makefile option.

Overall, aside the possible occasional build issues here and there, it's
expected to be a bit more stable than dev3, which I'm currently already
satisfied with.

Let's set on -dev5 around next Wednesday with the final polishing. Depending
on the amount of issues we'll be able to decide on a release date.

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.0/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.0/src/CHANGELOG
   Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/

Complete changelog :
Bertrand Jacquin (1):
      DOC: fix "successful" typo

Christopher Faulet (1):
      BUG/MINOR: http_fetch: Rely on the smp direction for "cookie()" and 

Emmanuel Hocdet (3):
      BUILD: makefile: use USE_OBSOLETE_LINKER for solaris
      BUILD: makefile: remove -fomit-frame-pointer optimisation (solaris)
      MAJOR: polling: add event ports support (Solaris)

Ilya Shipitsin (2):
      BUILD: enable freebsd builds on cirrus-ci
      BUILD: travis: add sanitizers to travis-ci builds

Olivier Houchard (3):
      BUG/MEDIUM: streams: Don't use CF_EOI to decide if the request is 
      BUG/MEDIUM: streams: Try to L7 retry before aborting the connection.
      BUG/MEDIUM: streams: Don't switch from SI_ST_CON to SI_ST_DIS on read0.

Tim Duesterhus (3):
      MEDIUM: Make 'option forceclose' actually warn
      MEDIUM: Make 'resolution_pool_size' directive fatal
      BUG/MINOR: mworker: Fix memory leak of mworker_proc members

William Lallemand (1):
      MINOR: init: setenv HAPROXY_CFGFILES

Willy Tarreau (61):
      DOC: management: place "show activity" at the right place
      MINOR: cli/activity: show the dumping thread ID starting at 1
      MINOR: task: export global_task_mask
      MINOR: cli/debug: add a thread dump function
      BUG/MINOR: debug: make ha_task_dump() always check the task before 
dumping it
      BUG/MINOR: debug: make ha_task_dump() actually dump the requested task
      MINOR: debug: make ha_thread_dump() and ha_task_dump() take a buffer
      BUG/MINOR: debug: don't check the call date on tasklets
      MINOR: thread: implement ha_thread_relax()
      MINOR: task: put barriers after each write to curr_task
      MINOR: task: always reset curr_task when freeing a task or tasklet
      MINOR: stream: detach the stream from its own task on stream_free()
      MEDIUM: debug/threads: implement an advanced thread dump system
      REGTEST: extend the check duration on tls_health_checks and mark it slow
      MINOR: threads/init: synchronize the threads startup
      MEDIUM: init/mworker: make the pipe register function a regular initcall
      CLEANUP: memory: make the fault injection code use the OTHER_LOCK label
      CLEANUP: threads: remove the now unused START_LOCK label
      MINOR: init/threads: make the global threads an array of structs
      MINOR: threads: add each thread's clockid into the global thread_info
      CLEANUP: stream: remove an obsolete debugging test
      MINOR: tools: add dump_hex()
      MINOR: debug: implement ha_panic()
      MINOR: debug/cli: add some debugging commands for developers
      MINOR: tools: provide a may_access() function and make dump_hex() use it
      MINOR: debug: make ha_panic() report threads starting at 1
      REORG: compat: move some integer limit definitions from standard.h to 
      REORG: threads: move the struct thread_info from global.h to hathreads.h
      MINOR: compat: make sure to always define clockid_t
      MINOR: threads: always place the clockid in the struct thread_info
      MINOR: threads: add a thread-local thread_info pointer "ti"
      MINOR: time: move the cpu, mono, and idle time to thread_info
      MINOR: time: add a function to retrieve another thread's cputime
      MINOR: debug: report each thread's cpu usage in "show thread"
      BUILD: threads: only assign the clock_id when supported
      CLEANUP: time: refine the test on _POSIX_TIMERS
      MINOR: compat: define a new empty type empty_t for non-implemented fields
      CLEANUP: time: switch clockid_t to empty_t when not available
      CLEANUP: objtype: make obj_type() and obj_type_name() take consts
      MINOR: debug: switch to SIGURG for thread dumps
      CLEANUP: threads: really move thread_info to hathreads.c
      MINOR: threads: make threads_{harmless|want_rdv}_mask constant 0 without 
      CLEANUP: debug: always report harmless/want_rdv even without threads
      MINOR: threads: implement ha_tkill() and ha_tkillall()
      CLEANUP: debug: make use of ha_tkill() and remove ifdefs
      MINOR: stream: introduce a stream_dump() function and use it in 
      MINOR: debug: dump streams when an applet, iocb or stream is known
      MINOR: threads: add a "stuck" flag to the thread_info struct
      MINOR: threads: add a timer_t per thread in thread_info
      MAJOR: watchdog: implement a thread lockup detection mechanism
      MINOR: stream: remove the cpu time detection from process_stream()
      MINOR: connection: report the mux names in "haproxy -vv"
      CLEANUP: mux-h1: use "H1" and not "h1" as the mux's name
      MINOR: WURFL: do not emit warnings when not configured
      CONTRIB: wurfl: address 3 build issues in the wurfl dummy library
      BUG/MEDIUM: init/threads: provide per-thread alloc/free function callbacks
      BUILD: time: remove the test on _POSIX_C_SOURCE
      CLEANUP: build: rename some build macros to use the USE_* ones
      CLEANUP: raw_sock: remove support for very old linux splice bug workaround
      BUG/MEDIUM: dns: make the port numbers unsigned
      MEDIUM: config: deprecate the antique req* and rsp* commands

mbellomi (8):
      BUG/MEDIUM: WURFL: segfault in wurfl-get() with missing info.
      MINOR: WURFL: call header_retireve_callback() in dummy library
      MINOR: WURFL: fixed Engine load failed error when wurfl-information-list 
contains wurfl_root_id
      MINOR: WURFL: shows log messages during module initialization
      MINOR: WURFL: removes heading wurfl-information-separator from 
wurfl-get-all() and wurfl-get() results
      MINOR: WURFL: wurfl_get() and wurfl_get_all() now return an empty string 
if device detection fails
      MEDIUM: WURFL: HTX awareness.
      MINOR: WURFL: module version bump to 2.0


Reply via email to