mirror of
https://github.com/haproxy/haproxy.git
synced 2026-07-15 20:03:33 -04:00
4 commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
088552ec08 |
[RELEASE] Released version 3.5-dev1
Some checks are pending
Contrib / admin/halog/ (push) Waiting to run
Contrib / dev/flags/ (push) Waiting to run
Contrib / dev/haring/ (push) Waiting to run
Contrib / dev/hpack/ (push) Waiting to run
Contrib / dev/poll/ (push) Waiting to run
FreeBSD / clang (push) Waiting to run
VTest / Generate Build Matrix (push) Waiting to run
VTest / (push) Blocked by required conditions
Windows / Windows, gcc, all features (push) Waiting to run
Released version 3.5-dev1 with the following main changes :
- BUG/MEDIUM: check: Skip tcpcheck post-config for external checks
- BUG/MEDIUM: check: Ignore small-buffer option when starting an external check
- MINOR: check: Don't dump buffers state in check traces for external checks
- BUG/MEDIUM: server/checks: Support healtcheck keyword on default-server lines
- BUG/MEDIUM: mux_quic: prevent risk of infinite loop on recv
- OPTIM: mux_quic: remove QCS from recv_list on reset
- BUG/MINOR: mux_quic: do not interrupt recv on error/incomplete data
- BUG/MINOR: tcpcheck: Override external check if healthcheck section is set
- REGTESTS: checks: Add script for external healthchecks
- BUG/MEDIUM: regex: initialize the match array earlier during boot
- BUG/MEDIUM: threads: Fiw build when using no thread
- BUG/MEDIUM: xprt_qmux: implement ->get_ssl_sock_ctx() to get the SSL laye
- CLEANUP: sessions: simplify the sess_priv_conns pool name
- MINOR: pools: reject creation of pools containing invalid chars in their name
- BUG/MINOR: acl: report "ACL" not "map" in ACL ID lookup failures
- MINOR: memprof: make in_memprof a bitfield instead of a counter
- MINOR: memprof: be careful to account allocations only once
- BUG/MEDIUM: checks: Dequeue checks on purge
- MINOR: servers: Add a back-pointer to the server in srv_per_thread
- MEDIUM: servers: Move to a per-thread idle connection cleanup task
- REGTESTS: Fix log matching in healthcheck-section.vtc
- BUG/MINOR: quic: fix Initial length value in sent packets
- BUILD: servers: Fix build with -std=gnu89
- BUG/MEDIUM: acme: stuck ACME task when authz is already "valid"
- MINOR: acme: introduce acme_challenge_ready() for reuse outside the CLI
- MINOR: h3: extend trace verbosity
- MINOR: h3: trace HTTP headers on FE side
- MINOR: h3: trace HTTP headers on BE side
- BUILD: h3: fix compilation with USE_TRACE=0
- MINOR: lua: add REGISTER_HLUA_STATE_INIT() to register state init callbacks
- MEDIUM: lua: move longjmp annotation macros to hlua.h
- MINOR: acme/lua: implement ACME.challenge_ready() Lua function
- BUG/MEDIUM: ktls: defer enabling TLS ULP on a socket until connected
- MINOR: errors: add ha_diag_notice() to report diag-level notifications
- BUG/MINOR: cpu-topo: use ha_diag_notice() to report thread creations
- MINOR: acme: publish ACME_NEWCERT event via event_hdl
- MINOR: acme: publish ACME_DEPLOY event via event_hdl
- EXAMPLES: lua/acme: add a dns-01 handler for Gandi LiveDNS API
- DOC: acme: add mentions of lua features
- MINOR: tasks: Introduce __task_set_state_and_tid
- MINOR: tasks: Add __task_get_new_tid_field()
- MINOR: tasks: Introduce __task_get_current_owner
- MINOR: tasks: Use __task_get_current_owner() in task_kill.
- MINOR: tasks: Start using __task_set_state_and_tid()
- MEDIUM: tasks: Remove the per-thread group wait queue
- MINOR: tasks: Use __task_set_state_and_tid() in task_instant_wakeup()
- MINOR: tasks: Remove wq_lock and the per-thread group wait queues
- MEDIUM: tasks: Redispatch shared tasks when the thread is loaded
- BUG/MEDIUM: h3: Properly handle PUSH_PROMISE on backend connections
- BUG/MINOR: server: fix add server with consistent hash balancing
- MINOR: lua: export hlua_pusherror() and check_args()
- REORG: httpclient/lua: move the lua httpclient code to http_client.c
- MEDIUM: httpclient/lua: allow multiple requests from a single core.httpclient() instance
- MEDIUM: httpclient: set res.status to 0 upon SF_ERR_MASK
- DOC: httpclient: document status 0 on internal error
- DEBUG: stconn: Add a BUG_ON on shut flags when the endpoint is shut
- BUG/MINOR: http-ana: Remove a debugging memset on redirect
- BUG/MEDIUM: http-ana: Don't ignore L7 retry errors
- BUG/MINOR: mux-h1: Properly resolve file path for 'h1-case-adjust-file'
- BUG/MINOR: quic: fix rxbuf settings on backend side
- EXAMPLES: lua/acme: fix acme-gandi-livedns.lua configuration example
- BUG/MEDIUM: ssl: Don't free the early data buffer too early
- BUG/MINOR: hpack-tbl: add missing NULL check after hpack_dht_defrag()
- BUG/MEDIUM: mux_quic: fix freeze transfer after QCS rxbuf realign
- BUG/MEDIUM: http-act: Make a copy of the sample expr in (set/add)-headers-bin
- BUG/MEDIUM: mux-fcgi: fix uint16_t overflow in drl += drp
- OPTIM: mux-fcgi: Reorganise fcgi_conn structure to fill some holes
- BUG/MINOR: hq-interop: reject too big content
- MINOR: hq_interop: do not rely on stream layer for HTX stline encoding
- BUG/MINOR: hq-interop: prevent reset if missing content-length
- BUG/MEDIUM: hlua: Properly report EOS when http applet exits
- BUG/MINOR: hq-interop: support full demux buf on large response
- BUG/MINOR: hq-interop: support response buffer wrapping
- DOC: sched: Document the wait queue modifications
- DOC: lua: remove incorrect init tags
- BUG/MEDIUM: h3: increment unknown request payload length
- REGTESTS: quic: test H3 request without content-length
- DEBUG: cli: relax tid check in "debug dev task" for recent sched changes
- MINOR: debug: add "print" to "debug dev sched"
- BUG/MINOR: poller: fix wait time calculation that is always 1 extra ms
- BUILD: quic_pacing: add missing includes for api and activity in the file
- MINOR: task: move the profiling checks to the called functions not callers
- MINOR: task: add a new explicitly local tasklet wakeup function
- MINOR: task: make tasklet_wakeup() explicitly call _tasklet_wakeup_here()
- MINOR: task: make task_instant_wakeup() explicitly call _tasklet_wakeup_here()
- MEDIUM: task: make __tasklet_wakeup_on() only accept non-local threads
- MEDIUM: task: add a new flag TASK_RT to permit a task to skip the priority queue
- MINOR: debug: add "rt=1" to "debug dev task" to tune the RT flag
- BUG/MEDIUM: mux-fcgi: Truly drain outgoing HTX data when the stream is closed
- BUG/MEDIUM: mux-h2: Truly drain outgoing HTX data when the stream is closed
- BUG/MEDIUM: mux-spop: Truly drain outgoing data when the stream is closed
- BUG/MEDIUM: mux-quic: Drain the given amount of data in qcs_http_reset_buf()
- CLEANUP: task: remove duplicated code in __tasklet_wakeup_after()
- BUILD: task: silence a build warning with threads disabled
- MINOR: task: do not try to redistribute the WQ when single-threaded
- MEDIUM: task: add a new tasklet class for real-time: TL_RT
|
||
|
|
e37a20d330 |
MEDIUM: task: add a new tasklet class for real-time: TL_RT
Some checks are pending
Contrib / admin/halog/ (push) Waiting to run
Contrib / dev/flags/ (push) Waiting to run
Contrib / dev/haring/ (push) Waiting to run
Contrib / dev/hpack/ (push) Waiting to run
Contrib / dev/poll/ (push) Waiting to run
FreeBSD / clang (push) Waiting to run
VTest / Generate Build Matrix (push) Waiting to run
VTest / (push) Blocked by required conditions
Windows / Windows, gcc, all features (push) Waiting to run
This adds new class TL_RT, which is processed before other queues for one (and only one) tasklet featuring the TASK_RT flag. This is meant to process real time wakeups under load with even less latency. We only process one entry to make sure it will not be abused for unimportant stuff, and if tune.sched.low-latency is set, we also avoid picking more tasks from the current run queues and looping after the first call to run_tasks_from_list(). Measurements under a load of 10k concurrent conns injection at 10 Gbps (~58k 20kB objects/s) on 4 threads and with task profiling enabled shows that the average wakeup latency for wakeups every 10ms dropped from 220 microseconds to 1.8 microsecond, and even ~550 nanoseconds when tune.sched.low-latency is set, or 400 times less. The doc was updated, including the schematics. |
||
|
|
8ab65c201a |
[RELEASE] Released version 2.4-dev10
Released version 2.4-dev10 with the following main changes :
- BUILD: SSL: introduce fine guard for RAND_keep_random_devices_open
- MINOR: Configure the `cpp` userdiff driver for *.[ch] in .gitattributes
- BUG/MINOR: ssl/cli: potential null pointer dereference in "set ssl cert"
- BUG/MINOR: sample: secure convs that accept base64 string and var name as args
- BUG/MEDIUM: vars: make functions vars_get_by_{name,desc} thread-safe
- CLEANUP: vars: make smp_fetch_var() to reuse vars_get_by_desc()
- DOC: muxes: add a diagram of the exchanges between muxes and outer world
- BUG/MEDIUM: proxy: use thread-safe stream killing on hard-stop
- BUG/MEDIUM: cli/shutdown sessions: make it thread-safe
- BUG/MINOR: proxy: wake up all threads when sending the hard-stop signal
- MINOR: stream: add an "epoch" to figure which streams appeared when
- MINOR: cli/streams: make "show sess" dump all streams till the new epoch
- MINOR: streams: use one list per stream instead of a global one
- MEDIUM: streams: do not use the streams lock anymore
- BUILD: dns: avoid a build warning when threads are disabled (dss unused)
- MEDIUM: task: remove the tasks_run_queue counter and have one per thread
- MINOR: tasks: do not maintain the rqueue_size counter anymore
- CLEANUP: tasks: use a less confusing name for task_list_size
- CLEANUP: task: move the tree root detection from __task_wakeup() to task_wakeup()
- MINOR: task: limit the remote thread wakeup to the global runqueue only
- MINOR: task: move the allocated tasks counter to the per-thread struct
- CLEANUP: task: split the large tasklet_wakeup_on() function in two
- BUG/MINOR: fd: properly wait for !running_mask in fd_set_running_excl()
- BUG/MINOR: resolvers: Fix condition to release received ARs if not assigned
- BUG/MINOR: resolvers: Only renew TTL for SRV records with an additional record
- BUG/MINOR: resolvers: new callback to properly handle SRV record errors
- BUG/MEDIUM: resolvers: Reset server address and port for obselete SRV records
- BUG/MEDIUM: resolvers: Reset address for unresolved servers
- DOC: Update the module list in MAINTAINERS file
- MINOR: htx: Add function to reserve the max possible size for an HTX DATA block
- DOC: Update the HTX API documentation
- DOC: Update the filters guide
- BUG/MEDIUM: contrib/prometheus-exporter: fix segfault in listener name dump
- MINOR: task: split the counts of local and global tasks picked
- MINOR: task: do not use __task_unlink_rq() from process_runnable_tasks()
- MINOR: task: don't decrement then increment the local run queue
- CLEANUP: task: re-merge __task_unlink_rq() with task_unlink_rq()
- MINOR: task: make grq_total atomic to move it outside of the grq_lock
- MINOR: tasks: also compute the tasklet latency when DEBUG_TASK is set
- MINOR: task: make tasklet wakeup latency measurements more accurate
- MINOR: server: Be more strict on the server-state line parsing
- MINOR: server: Only fill one array when parsing a server-state line
- MEDIUM: server: Refactor apply_server_state() to make it more readable
- CLEANUP: server: Rename state_line node to node instead of name_name
- CLEANUP: server: Rename state_line structure into server_state_line
- CLEANUP: server: Use a local eb-tree to store lines of the global server-state file
- MINOR: server: Be more strict when reading the version of a server-state file
- MEDIUM: server: Store parsed params of a server-state line in the tree
- MINOR: server: Remove cached line from global server-state tree when found
- MINOR: server: Move loading state of servers in a dedicated function
- MEDIUM: server: Use a tree to store local server-state lines
- MINOR: server: Parse and store server-state lines in a dedicated function
- MEDIUM: server: Don't load server-state file if a line is corrupted
- REORG: server: Export and rename some functions updating server info
- REORG: server-state: Move functions to deal with server-state in its own file
- MINOR: server-state: Don't load server-state file for serverless proxies
- CLEANUP: muxes: Remove useless if condition in show_fd function
- BUG/MINOR: stats: fix compare of no-maint url suffix
- MINOR: task: limit the number of subsequent heavy tasks with flag TASK_HEAVY
- MINOR: ssl: mark the SSL handshake tasklet as heavy
- CLEANUP: server: rename srv_cleanup_{idle,toremove}_connections()
- BUG/MINOR: ssl: potential null pointer dereference in ckchs_dup()
- MINOR: task: add one extra tasklet class: TL_HEAVY
- MINOR: task: place the heavy elements in TL_HEAVY
- MINOR: task: only limit TL_HEAVY tasks but not others
- BUG/MINOR: http-ana: Only consider dst address to process originalto option
- MINOR: tools: Add net_addr structure describing a network addess
- MINOR: tools: Add function to compare an address to a network address
- MEDIUM: http-ana: Add IPv6 support for forwardfor and orignialto options
- CLEANUP: hlua: Use net_addr structure internally to parse and compare addresses
- REGTESTS: Add script to test except param for fowardedfor/originalto options
- DOC: scheduler: add a diagram showing the different queues and their usages
- CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x)
- CLEANUP: config: replace a few free() with ha_free()
- CLEANUP: vars: always zero the pointers after a free()
- CLEANUP: ssl: remove a useless "if" before freeing an error message
- CLEANUP: ssl: make ssl_sock_free_srv_ctx() zero the pointers after free
- CLEANUP: ssl: use realloc() instead of free()+malloc()
|
||
|
|
ee17b97eea |
DOC: scheduler: add a diagram showing the different queues and their usages
The scheduler has become complex over time and the latest updates were a good opportunity to document it. This diagram shows the time-based wait queue(s), the priority-based run queue(s), and the class-based tasklet queues, trying to emphasize what is local-only and what is shared between threads. The diagram is provided in .fig, .svg, .png, and .pdf. |