stable-bot: WARNING: 31 bug fixes in queue for next release - 1.9

2019-12-28 Thread stable-bot
Hi,

This is a friendly bot that watches fixes pending for the next haproxy-stable 
release!  One such e-mail is sent periodically once patches are waiting in the 
last maintenance branch, and an ideal release date is computed based on the 
severity of these fixes and their merge date.  Responses to this mail must be 
sent to the mailing list.

Last release 1.9.13 was issued on 2019/11/25.  There are currently 31 patches 
in the queue cut down this way:
- 2 MAJOR, first one merged on 2019/12/10
- 11 MEDIUM, first one merged on 2019/12/05
- 18 MINOR, first one merged on 2019/11/25

Thus the computed ideal release date for 1.9.14 would be 2019/12/23, which was 
one week ago.

The current list of patches in the queue is:
- MAJOR   : task: add a new TASK_SHARED_WQ flag to fix foreing requeuing
- MAJOR   : dns: add minimalist error processing on the Rx path
- MEDIUM  : listener/thread: fix a race when pausing a listener
- MEDIUM  : stream-int: don't subscribed for recv when we're trying to 
flush data
- MEDIUM  : ssl: Don't set the max early data we can receive too early.
- MEDIUM  : listener/threads: fix a remaining race in the listener's 
accept()
- MEDIUM  : checks: Make sure we set the task affinity just before 
connecting.
- MEDIUM  : mux-h1: Never reuse H1 connection if a shutw is pending
- MEDIUM  : kqueue: Make sure we report read events even when no data.
- MEDIUM  : fd/threads: fix a concurrency issue between add and rm on the 
same fd
- MEDIUM  : proto_udp/threads: recv() and send() must not be exclusive.
- MEDIUM  : stream: address a very rare unhandled connection issue
- MEDIUM  : tasks: Make sure we switch wait queues in task_set_affinity().
- MINOR   : tasks: only requeue a task if it was already in the queue
- MINOR   : server: make "agent-addr" work on default-server line
- MINOR   : listener/threads: always use atomic ops to clear the FD events
- MINOR   : stream: init variables when the list is empty
- MINOR   : sample: fix the closing bracket and LF in the debug converter
- MINOR   : ssl: openssl-compat: 1.9 uses OPENSSL_VERSION, not 
HA_OPENSSL_VERSION
- MINOR   : proxy: make soft_stop() also close FDs in LI_PAUSED state
- MINOR   : listener: do not immediately resume on transient error
- MINOR   : mworker: properly pass SIGTTOU/SIGTTIN to workers
- MINOR   : mux-h1: Fix conditions to know whether or not we may receive 
data
- MINOR   : log: fix minor resource leaks on logformat error path
- MINOR   : http-htx: Don't make http_find_header() fail if the value is 
empty
- MINOR   : ssl: certificate choice can be unexpected with openssl >= 1.1.1
- MINOR   : listener: also clear the error flag on a paused listener
- MINOR   : listener: fix off-by-one in state name check
- MINOR   : ssl: openssl-compat: Fix getm_ defines
- MINOR   : mux-h1: Don't rely on CO_FL_SOCK_RD_SH to set H1C_F_CS_SHUTDOWN
- MINOR   : sample: always check converters' arguments

---
The haproxy stable-bot is freely provided by HAProxy Technologies to help 
improve the quality of each HAProxy release.  If you have any issue with these 
emails or if you want to suggest some improvements, please post them on the 
list so that the solutions suiting the most users can be found.



stable-bot: WARNING: 17 bug fixes in queue for next release - 1.8

2019-12-28 Thread stable-bot
Hi,

This is a friendly bot that watches fixes pending for the next haproxy-stable 
release!  One such e-mail is sent periodically once patches are waiting in the 
last maintenance branch, and an ideal release date is computed based on the 
severity of these fixes and their merge date.  Responses to this mail must be 
sent to the mailing list.

Last release 1.8.23 was issued on 2019/11/25.  There are currently 17 patches 
in the queue cut down this way:
- 1 MAJOR, first one merged on 2019/12/10
- 5 MEDIUM, first one merged on 2019/12/05
- 11 MINOR, first one merged on 2019/12/05

Thus the computed ideal release date for 1.8.24 would be 2019/12/24, which was 
within the last week.

The current list of patches in the queue is:
- MAJOR   : dns: add minimalist error processing on the Rx path
- MEDIUM  : listener/thread: fix a race when pausing a listener
- MEDIUM  : listener/threads: fix a remaining race in the listener's 
accept()
- MEDIUM  : kqueue: Make sure we report read events even when no data.
- MEDIUM  : ssl: Don't set the max early data we can receive too early.
- MEDIUM  : proto_udp/threads: recv() and send() must not be exclusive.
- MINOR   : server: make "agent-addr" work on default-server line
- MINOR   : ssl: certificate choice can be unexpected with openssl >= 1.1.1
- MINOR   : proxy: make soft_stop() also close FDs in LI_PAUSED state
- MINOR   : listener/threads: always use atomic ops to clear the FD events
- MINOR   : listener: fix off-by-one in state name check
- MINOR   : listener: do not immediately resume on transient error
- MINOR   : mworker: properly pass SIGTTOU/SIGTTIN to workers
- MINOR   : sample: fix the closing bracket and LF in the debug converter
- MINOR   : sample: always check converters' arguments
- MINOR   : log: fix minor resource leaks on logformat error path
- MINOR   : listener: also clear the error flag on a paused listener

---
The haproxy stable-bot is freely provided by HAProxy Technologies to help 
improve the quality of each HAProxy release.  If you have any issue with these 
emails or if you want to suggest some improvements, please post them on the 
list so that the solutions suiting the most users can be found.



[PATCH] MINOR: config: disable busy polling on old processes

2019-12-28 Thread William Dauchy
in the context of seamless reload and busy polling, older processes will
create unecessary cpu conflicts; we can assume there is no need for busy
polling for old processes which are waiting to be terminated.

This patch is not a bug fix itself but might be a good stability
improvment when you are un the context of frequent seamless reloads with
a high "hard-stop-after" value; for that reasons I think this patch
should be backported in all 2.x versions.

Signed-off-by: William Dauchy 
---
 doc/configuration.txt | 3 +++
 src/proxy.c   | 2 ++
 2 files changed, 5 insertions(+)

diff --git a/doc/configuration.txt b/doc/configuration.txt
index bfc8b903..c8e13192 100644
--- a/doc/configuration.txt
+++ b/doc/configuration.txt
@@ -1475,6 +1475,9 @@ busy-polling
   default. If it has been enabled, it may still be forcibly disabled by
   prefixing it with the "no" keyword. It is ignored by the "select" and
   "poll" pollers.
+  This option is automatically disabled on old processes in the context of
+  seamless reload; it avoids too much cpu conflicts when multiple processes
+  stay around for some time waiting for the end of their current connections.
 
 max-spread-checks 
   By default, haproxy tries to spread the start of health checks across the
diff --git a/src/proxy.c b/src/proxy.c
index a5570daf..9448d1a3 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -1116,6 +1116,8 @@ void soft_stop(void)
struct task *task;
 
stopping = 1;
+   /* disable busy polling to avoid cpu eating for the new process */
+   global.tune.options &= ~GTUNE_BUSY_POLLING;
if (tick_isset(global.hard_stop_after)) {
task = task_new(MAX_THREADS_MASK);
if (task) {
-- 
2.24.1