Hi everyone!

So it's getting better. When fixing the scheduler issues in the last
RC, I messed up with the tree traversal, leading to some tasks waiting
in the run queue without being found for a while. This was causing some
timeouts and occasionally 100% CPU during normal operation. This is now
fixed. Christopher also fixed an issue we had with both the task and
applet schedulers in multi-threaded configurations, risking to make
some threads spin believing there's some work while there's nothing
for them. At the same time, the applet scheduler was modified to have
a bound on the number of applets run at once, to avoid high latencies
when lots of applets are used (eg: cache).

The master/worker code got several fixes. It doesn't try to call deinit()
before calling execvp() because it's pointless, and this is the riskiest
function of the whole program, always risking to die somewhere in case
something doesn't initialize properly. It would be bad to see the master
die upon reload!

A few other minor issues were fixed (eg: boot messages were lost till
rc3).

Overall everything is in good shape. We have analysed and understood
the issues in the cache revealed when using HTTP/2, these ones should
now be fixed in the following days. Other issues exhibited by HTTP/2
when using redirects and filters uncovered a bug which also affects
1.7 and that we'll fix in the following days as well (several solutions
in mind, we're just checking). A few adjustments still have to be done
on the cache, and we also need to adjust the way to pin processes and
threads to CPUs.

There are still a few cleanups to be done on the internal API, some
functions and variables still have to be renamed as they cause continued
confusion (eg: the global "proxy" variable). I have to add a startup
check to detect an HTTP/2 configuration with a buffer smaller than 16kB
(this is not permitted by the spec).

I'm quite happy with the current progress and the process is going well,
with sufficient testers to report corner cases helping narrow down the
remaining bugs.

I'm not yet convinced we'll need an RC5 but we'll see. It's very likely
that next week-end will see 1.8-final if things continue at this speed.
At least, despite the bugs above, haproxy.org has been running on RC3
for the last week with HTTP/2 and threads enabled. We're taking a bit
of risks to enable two experimental features at once but it's the best
way to spot bugs! Something tells me that within a day or two it will
be upgraded to the latest snapshot to enable caching as well :-)

Last point : if you think you've spotted a regression, it's the last
moment to report it. If you expect that someone else will likely find it
before the release, you'll experience the "dot 0" syndrome. The rule is
simple, if you face a problem, please check if it happens with 1.7. If
it does, the problem can be reported a bit later (but we still need to
know about it). If it doesn't, it's a regression and it must absolutely
be reported as soon as possible.

Please find the usual URLs below :
   Site index       : http://www.haproxy.org/
   Discourse        : http://discourse.haproxy.org/
   Sources          : http://www.haproxy.org/download/1.8/src/
   Git repository   : http://git.haproxy.org/git/haproxy-1.8.git/
   Git Web browsing : http://git.haproxy.org/?p=haproxy-1.8.git
   Changelog        : http://www.haproxy.org/download/1.8/src/CHANGELOG
   Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/

Willy
---
Complete changelog :
Christopher Faulet (14):
      BUG/MINOR: spoe: check buffer size before acquiring or releasing it
      MINOR: debug/flags: Add missing flags
      MINOR: threads: Use __decl_hathreads to declare locks
      BUG/MINOR: buffers: Fix b_alloc_margin to be "fonctionnaly" thread-safe
      BUG/MINOR: threads: tid_bit must be a unsigned long
      CLEANUP: tasks: Remove useless double test on rq_next
      BUG/MEDIUM: standard: itao_str/idx and quote_str/idx must be thread-local
      BUG/MINOR: Allocate the log buffers before the proxies startup
      MINOR: tasks: Use a bitfield to track tasks activity per-thread
      MAJOR: polling: Use active_tasks_mask instead of tasks_run_queue
      MINOR: applets: Use a bitfield to track applets activity per-thread
      MAJOR: polling: Use active_appels_mask instead of applets_active_queue
      MEDIUM: applets: Don't process more than 200 active applets at once
      MINOR: stream: Add thread-mask of tasks/FDs/applets in "show sess all" 
command

David Carlier (1):
      BUG/MEDIUM: deviceatlas: ignore not valuable HTTP request data

Frédéric Lécaille (2):
      DOC: peers: Add a first version of peers protocol v2.1.
      CONTRIB: Wireshark dissector for HAProxy Peer Protocol.

Olivier Houchard (2):
      MINOR: SSL: Store the ASN1 representation of client sessions.
      MINOR: ssl: Make sure we don't shutw the connection before the handshake.

Tim Duesterhus (1):
      BUG/MEDIUM: mworker: Fix re-exec when haproxy is started from PATH

William Lallemand (9):
      BUG/MEDIUM: cache: does not cache if no Content-Length
      BUG/MEDIUM: cache: use msg->sov to forward header
      MINOR: cache: forward data with headers
      MINOR: cache: disable cache if shctx_row_data_append fail
      MINOR: mworker: display an accurate error when the reexec fail
      BUG/MEDIUM: mworker: wait again for signals when execvp fail
      BUG/MEDIUM: mworker: does not deinit anymore
      BUG/MEDIUM: mworker: does not close inherited FD
      MINOR: tests: add a python wrapper to test inherited fd

Willy Tarreau (9):
      BUILD: thread/pipe: fix build without threads
      BUG/MAJOR: ebtree/scope: fix insertion and removal of duplicates in 
scope-aware trees
      BUG/MAJOR: ebtree/scope: fix lookup of next node in scope-aware trees
      MINOR: ebtree/scope: add a function to find next node from a parent
      MINOR: ebtree/scope: simplify the lookup functions by using 
eb32sc_next_with_parent()
      MINOR: tools: add a function to dump a scope-aware tree to a file
      MINOR: tools: improve the DOT dump of the ebtree
      MINOR: tools: emphasize the node being worked on in the tree dump
      BUG/MAJOR: ebtree/scope: properly tag upper nodes during insertion

---

Reply via email to