From 1fb61475f2cdc54945a2effa08409b27d0ac3006 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 16 Oct 2024 22:57:52 +0200 Subject: [PATCH] [RELEASE] Released version 3.1-dev10 Released version 3.1-dev10 with the following main changes : - BUG/MAJOR: mux-quic: do not crash on empty STREAM frame emission - BUG/MINOR: stats: Fix the name for the total number of streams created - MINOR: quic: strengthen qc_release_frm() - MEDIUM: quic: decount acknowledged data for MUX txbuf window - MINOR: quic: implement dedicated type for out-of-order stream ACK - MEDIUM: quic: merge contiguous/overlapping buffered ack stream range - MEDIUM: quic: decount out-of-order ACK data range for MUX txbuf window - MINOR: log: add do_log() logging helper - MINOR: log: add do_log_parse_act() helper func - MINOR: action: add do-log action - REGTESTS: add some tests for 'do-log' action - BUG/MEDIUM: hlua: make hlua_ctx_renew() safe - BUG/MEDIUM: hlua: properly handle sample func errors in hlua_run_sample_{fetch,conv}() - BUG/MINOR: quic: fix discarding of already stored out-of-order ACK - BUG/MEDIUM: quic: properly decount out-of-order ACK on stream release - MINOR: ssl: disable server side default CRL check with WolfSSL - MEDIUM: sink: implement sink_find_early() - MINOR: trace: postresolve sink names - MINOR: sample: postresolve sink names in debug() converter - BUG/MEDIUM: mux-quic: ensure timeout server is active for short requests - MINOR: cfgparse: simulate long configuration parsing with force-cfg-parser-pause - BUILD: cache: silence an uninitialized warning at -Og with gcc-12.2 - BUG/MINOR: mux-h2/traces: present the correct buffer for trailers errors traces - MINOR: mux-h2/traces: print the size of the DATA frames - CLEANUP: muxes: remove useless inclusion of ebmbtree.h - REORG: buffers: move some of the heavy functions from buf.h to buf.c - MINOR: buffer: add a buffer list type with functions - MINOR: mux-h2: split the amount of rx data from the amount to ack - MINOR: mux-h2: create and initialize an rx offset per stream - MEDIUM: mux-h2: start to update stream when sending WU - MEDIUM: mux-h2: start to introduce the window size in the offset calculation - MINOR: mux-h2: count within a connection, how many streams are receiving data - MINOR: mux-h2: allocate the array of shared rx bufs in the h2c - MINOR: mux-h2: add rxbuf head/tail/count management for h2s - MINOR: mux-h2: move H2_CF_WAIT_IN_LIST flag away from the demux flags - MINOR: mux-h2: simplify the exit code in h2_rcv_buf() - MINOR: mux-h2: simplify the wake up code in h2_rcv_buf() - MINOR: mux-h2: clear up H2_CF_DEM_DFULL and H2_CF_DEM_SHORT_READ ambiguity - MAJOR: mux-h2: make streams use the connection's buffers - MAJOR: mux-h2: permit a stream to allocate as many buffers as desired - MAJOR: mux-h2: make the rxbuf allocation algorithm a bit smarter - MINOR: mux-h2: add tune.h2.be.rxbuf and tune.h2.fe.rxbuf global settings - MEDIUM: mux-h2: change the default initial window to 16kB - DOC: design-thoughts: add diagrams illustrating an rx win groth - MEDIUM: mux-h2: rework h2_restart_reading() to differentiate recv and demux - OPTIM: mux-h2: make h2_send() report more accurate wake up conditions - OPTIM: mux-h2: try to continue reading after demuxing when useful - OPTIM: mux-h2: use tasklet_wakeup_after() in h2s_notify_recv() - MINOR: mux-h2/traces: add missing flags and proxy ID in traces - MINOR: mux-h2/traces: add buffer-related info to h2s and h2c - CI: cirrus-ci: bump FreeBSD image to 14-1 - REGTESTS: fix a reload race in abns_socket.vtc - MINOR: activity/memprofile: always return "other" bin on NULL return address - MINOR: quic: notify connection layer on handshake completion - BUG/MINOR: stream: unblock stream on wait-for-handshake completion - BUG/MEDIUM: quic: support wait-for-handshake - BUG/MEDIUM: server: server stuck in maintenance after FQDN change - BUG/MEDIUM: queue: make sure never to queue when there's no more served conns - DEBUG: mux-h2/flags: add H2_CF_DEM_RXBUF & H2_SF_EXPECT_RXDATA for the decoder - REGTESTS: cli: add delay 0.1 before connect to cli - MINOR: startup: add O_CLOEXEC flag to open /dev/null - MEDIUM: startup: move daemonization fork in init - MINOR: startup: refactor "daemonization" fork - MEDIUM: startup: move PID handling in init() - MAJOR: mworker: move master-worker fork in init() - BUG/MINOR: mworker: fix memory leak due to master-worker fork - REORG: mworker: set nbthread=1 for master after fork - MINOR: init: check MODE_MWORKER before creating master CLI - REORG: mworker: move mworker_create_master_cli in master 'case' - MEDIUM: startup: call chroot() if needed in one place - MEDIUM: startup: do set_identity() if needed in one place - MINOR: startup: only worker gets capabilities from bin - CLEANUP: haproxy: rm no longer used mworker_reexec_waitmode - MINOR: startup: rename exit_on_waitmode_failure to exit_on_failure - MINOR: defaults: update MASTER_MAXCONN description - MEDIUM: startup: remove MODE_MWORKER_WAIT - MINOR: global: add MODE_DISCOVERY flag - MEDIUM: cfgparse: add KWF_DISCOVERY keyword flag - MEDIUM: cfgparse: call some parsers only in MODE_DISCOVERY - MEDIUM: cfgparse-global: parse only KWF_DISCOVERY keywords in MODE_DISCOVERY - MEDIUM: cfgparse: parse only "global" section in MODE_DISCOVERY - MEDIUM: startup: introduce load_cfg and read_cfg - MINOR: cfgparse: fix *thread keywords sensitive to global section position - MINOR: mworker/cli: rename mworker_cli_proxy_new_listener - MINOR: mworker/cli: rename and clean mworker_cli_sockpair_new - MINOR: mworker/cli: create master CLI sockpair before fork - MINOR: mworker/cli: create MASTER proxy before mcli listeners - MINOR: mworker: add and set state PROC_O_INIT for new worker - MEDIUM: mworker/cli: close child and parent fds, setup listeners - MINOR: mworker: mworker_catch_sigchld: use fd_delete instead of close - MINOR: startup: rename and adapt reexec_on_failure - MINOR: mworker: add support for case when new worker dies - MINOR: mworker: simplify the code that sets PROC_O_LEAVING - MINOR: mworker/cli: add _send_status to support state transition - MEDIUM: startup: split sending oldpids_sig logic for standalone and mworker modes - MINOR: startup: split init() into separate initialization routines - MINOR: startup: split main: add step_init_3 - MINOR: startup: simplify check for calling sock_get_old_sockets - MINOR: startup: encapsulate sock_get_old_sockets in a function - MINOR: startup: add bind_listeners - MINOR: startup: split main: add step_init_4 - MINOR: startup: encapsulate master's code in run_master - MINOR: startup: add read_cfg_in_discovery_mode - MINOR: mworker: adapt exit_on_failure for master recovery mode - MEDIUM: mworker: add support of master recovery mode - MINOR: startup: add set_verbosity - MEDIUM: mworker: block reloads - MINOR: mworker: slow load status delivery if worker is starting - MINOR: mworker: readapt program support in mworker_catch_sigchld - MINOR: mworker: deserialize process list before read_cfg_in_discovery_mode - MINOR: mworker: parse program only in MODE_DISCOVERY - MINOR: cfgparse: add support for program section - MINOR: startup: reintroduce program support - MINOR: mworker-prog: stop old programs in mworker_ext_launch_all - MINOR: mworker: reintroduce systemd support - MINOR: mworker: report explicitly when worker exits due to max reloads - MINOR: cfgparse-global: parse *env keywords in MODE_DISCOVERY - MINOR: startup: reintroduce *env keywords support - MINOR: startup: close devnullfd, when daemon mode is applied --- CHANGELOG | 121 ++++++++++++++++++++++++++++++ VERDATE | 2 +- VERSION | 2 +- doc/configuration.txt | 2 +- doc/design-thoughts/h2-rx-win.fig | 2 +- 5 files changed, 125 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index e3cff9a12f1d..0acd27ba35ee 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,127 @@ ChangeLog : =========== +2024/10/16 : 3.1-dev10 + - BUG/MAJOR: mux-quic: do not crash on empty STREAM frame emission + - BUG/MINOR: stats: Fix the name for the total number of streams created + - MINOR: quic: strengthen qc_release_frm() + - MEDIUM: quic: decount acknowledged data for MUX txbuf window + - MINOR: quic: implement dedicated type for out-of-order stream ACK + - MEDIUM: quic: merge contiguous/overlapping buffered ack stream range + - MEDIUM: quic: decount out-of-order ACK data range for MUX txbuf window + - MINOR: log: add do_log() logging helper + - MINOR: log: add do_log_parse_act() helper func + - MINOR: action: add do-log action + - REGTESTS: add some tests for 'do-log' action + - BUG/MEDIUM: hlua: make hlua_ctx_renew() safe + - BUG/MEDIUM: hlua: properly handle sample func errors in hlua_run_sample_{fetch,conv}() + - BUG/MINOR: quic: fix discarding of already stored out-of-order ACK + - BUG/MEDIUM: quic: properly decount out-of-order ACK on stream release + - MINOR: ssl: disable server side default CRL check with WolfSSL + - MEDIUM: sink: implement sink_find_early() + - MINOR: trace: postresolve sink names + - MINOR: sample: postresolve sink names in debug() converter + - BUG/MEDIUM: mux-quic: ensure timeout server is active for short requests + - MINOR: cfgparse: simulate long configuration parsing with force-cfg-parser-pause + - BUILD: cache: silence an uninitialized warning at -Og with gcc-12.2 + - BUG/MINOR: mux-h2/traces: present the correct buffer for trailers errors traces + - MINOR: mux-h2/traces: print the size of the DATA frames + - CLEANUP: muxes: remove useless inclusion of ebmbtree.h + - REORG: buffers: move some of the heavy functions from buf.h to buf.c + - MINOR: buffer: add a buffer list type with functions + - MINOR: mux-h2: split the amount of rx data from the amount to ack + - MINOR: mux-h2: create and initialize an rx offset per stream + - MEDIUM: mux-h2: start to update stream when sending WU + - MEDIUM: mux-h2: start to introduce the window size in the offset calculation + - MINOR: mux-h2: count within a connection, how many streams are receiving data + - MINOR: mux-h2: allocate the array of shared rx bufs in the h2c + - MINOR: mux-h2: add rxbuf head/tail/count management for h2s + - MINOR: mux-h2: move H2_CF_WAIT_IN_LIST flag away from the demux flags + - MINOR: mux-h2: simplify the exit code in h2_rcv_buf() + - MINOR: mux-h2: simplify the wake up code in h2_rcv_buf() + - MINOR: mux-h2: clear up H2_CF_DEM_DFULL and H2_CF_DEM_SHORT_READ ambiguity + - MAJOR: mux-h2: make streams use the connection's buffers + - MAJOR: mux-h2: permit a stream to allocate as many buffers as desired + - MAJOR: mux-h2: make the rxbuf allocation algorithm a bit smarter + - MINOR: mux-h2: add tune.h2.be.rxbuf and tune.h2.fe.rxbuf global settings + - MEDIUM: mux-h2: change the default initial window to 16kB + - DOC: design-thoughts: add diagrams illustrating an rx win groth + - MEDIUM: mux-h2: rework h2_restart_reading() to differentiate recv and demux + - OPTIM: mux-h2: make h2_send() report more accurate wake up conditions + - OPTIM: mux-h2: try to continue reading after demuxing when useful + - OPTIM: mux-h2: use tasklet_wakeup_after() in h2s_notify_recv() + - MINOR: mux-h2/traces: add missing flags and proxy ID in traces + - MINOR: mux-h2/traces: add buffer-related info to h2s and h2c + - CI: cirrus-ci: bump FreeBSD image to 14-1 + - REGTESTS: fix a reload race in abns_socket.vtc + - MINOR: activity/memprofile: always return "other" bin on NULL return address + - MINOR: quic: notify connection layer on handshake completion + - BUG/MINOR: stream: unblock stream on wait-for-handshake completion + - BUG/MEDIUM: quic: support wait-for-handshake + - BUG/MEDIUM: server: server stuck in maintenance after FQDN change + - BUG/MEDIUM: queue: make sure never to queue when there's no more served conns + - DEBUG: mux-h2/flags: add H2_CF_DEM_RXBUF & H2_SF_EXPECT_RXDATA for the decoder + - REGTESTS: cli: add delay 0.1 before connect to cli + - MINOR: startup: add O_CLOEXEC flag to open /dev/null + - MEDIUM: startup: move daemonization fork in init + - MINOR: startup: refactor "daemonization" fork + - MEDIUM: startup: move PID handling in init() + - MAJOR: mworker: move master-worker fork in init() + - BUG/MINOR: mworker: fix memory leak due to master-worker fork + - REORG: mworker: set nbthread=1 for master after fork + - MINOR: init: check MODE_MWORKER before creating master CLI + - REORG: mworker: move mworker_create_master_cli in master 'case' + - MEDIUM: startup: call chroot() if needed in one place + - MEDIUM: startup: do set_identity() if needed in one place + - MINOR: startup: only worker gets capabilities from bin + - CLEANUP: haproxy: rm no longer used mworker_reexec_waitmode + - MINOR: startup: rename exit_on_waitmode_failure to exit_on_failure + - MINOR: defaults: update MASTER_MAXCONN description + - MEDIUM: startup: remove MODE_MWORKER_WAIT + - MINOR: global: add MODE_DISCOVERY flag + - MEDIUM: cfgparse: add KWF_DISCOVERY keyword flag + - MEDIUM: cfgparse: call some parsers only in MODE_DISCOVERY + - MEDIUM: cfgparse-global: parse only KWF_DISCOVERY keywords in MODE_DISCOVERY + - MEDIUM: cfgparse: parse only "global" section in MODE_DISCOVERY + - MEDIUM: startup: introduce load_cfg and read_cfg + - MINOR: cfgparse: fix *thread keywords sensitive to global section position + - MINOR: mworker/cli: rename mworker_cli_proxy_new_listener + - MINOR: mworker/cli: rename and clean mworker_cli_sockpair_new + - MINOR: mworker/cli: create master CLI sockpair before fork + - MINOR: mworker/cli: create MASTER proxy before mcli listeners + - MINOR: mworker: add and set state PROC_O_INIT for new worker + - MEDIUM: mworker/cli: close child and parent fds, setup listeners + - MINOR: mworker: mworker_catch_sigchld: use fd_delete instead of close + - MINOR: startup: rename and adapt reexec_on_failure + - MINOR: mworker: add support for case when new worker dies + - MINOR: mworker: simplify the code that sets PROC_O_LEAVING + - MINOR: mworker/cli: add _send_status to support state transition + - MEDIUM: startup: split sending oldpids_sig logic for standalone and mworker modes + - MINOR: startup: split init() into separate initialization routines + - MINOR: startup: split main: add step_init_3 + - MINOR: startup: simplify check for calling sock_get_old_sockets + - MINOR: startup: encapsulate sock_get_old_sockets in a function + - MINOR: startup: add bind_listeners + - MINOR: startup: split main: add step_init_4 + - MINOR: startup: encapsulate master's code in run_master + - MINOR: startup: add read_cfg_in_discovery_mode + - MINOR: mworker: adapt exit_on_failure for master recovery mode + - MEDIUM: mworker: add support of master recovery mode + - MINOR: startup: add set_verbosity + - MEDIUM: mworker: block reloads + - MINOR: mworker: slow load status delivery if worker is starting + - MINOR: mworker: readapt program support in mworker_catch_sigchld + - MINOR: mworker: deserialize process list before read_cfg_in_discovery_mode + - MINOR: mworker: parse program only in MODE_DISCOVERY + - MINOR: cfgparse: add support for program section + - MINOR: startup: reintroduce program support + - MINOR: mworker-prog: stop old programs in mworker_ext_launch_all + - MINOR: mworker: reintroduce systemd support + - MINOR: mworker: report explicitly when worker exits due to max reloads + - MINOR: cfgparse-global: parse *env keywords in MODE_DISCOVERY + - MINOR: startup: reintroduce *env keywords support + - MINOR: startup: close devnullfd, when daemon mode is applied + 2024/10/03 : 3.1-dev9 - MINOR: tools: add minimal file name management - CLEANUP: stick-table: make the file location point to a global file name diff --git a/VERDATE b/VERDATE index 4e7ae5a49e9b..e0a50e9debee 100644 --- a/VERDATE +++ b/VERDATE @@ -1,2 +1,2 @@ $Format:%ci$ -2024/10/03 +2024/10/16 diff --git a/VERSION b/VERSION index 379ad887c738..9a1379333acf 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.1-dev9 +3.1-dev10 diff --git a/doc/configuration.txt b/doc/configuration.txt index 34e07f3cf333..a6bb9062f81d 100644 --- a/doc/configuration.txt +++ b/doc/configuration.txt @@ -3,7 +3,7 @@ Configuration Manual ---------------------- version 3.1 - 2024/10/03 + 2024/10/16 This document covers the configuration language as implemented in the version diff --git a/doc/design-thoughts/h2-rx-win.fig b/doc/design-thoughts/h2-rx-win.fig index 45e7658a26aa..7463640f0bd6 100644 --- a/doc/design-thoughts/h2-rx-win.fig +++ b/doc/design-thoughts/h2-rx-win.fig @@ -1,4 +1,4 @@ -#FIG 3.2 Produced by xfig version 3.2.8b +#FIG 3.2 Produced by xfig version 3.1 Landscape Center Metric