haproxy/src
Willy Tarreau 9b9f8477f8 MEDIUM: backend: use a trylock to grab a connection on high FD counts as well
Commit b1adf03df ("MEDIUM: backend: use a trylock when trying to grab an
idle connection") solved a contention issue on the backend under normal
condition, but there is another one further, which only happens when the
number of FDs in use is considered too high, and which obviously causes
random crashes with just 16 threads once the number of FDs is about to be
exhausted.

Like the aforementioned patch, this one should be backported to 2.3.
2021-03-27 09:39:23 +01:00
..
51d.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
acl.c REORG: global: move free acl/action in their related source files 2021-03-26 15:28:33 +01:00
action.c REORG: global: move free acl/action in their related source files 2021-03-26 15:28:33 +01:00
activity.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
applet.c MEDIUM: dynbuf: remove last usages of b_alloc_margin() 2021-03-22 16:27:59 +01:00
arg.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
auth.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
backend.c MEDIUM: backend: use a trylock to grab a connection on high FD counts as well 2021-03-27 09:39:23 +01:00
base64.c REORG: include: move base64.h, errors.h and hash.h from common to to haproxy/ 2020-06-11 10:18:56 +02:00
cache.c MINOR: cache: use pool_alloc(), not pool_alloc_dirty() 2021-03-22 15:35:53 +01:00
calltrace.c BUILD: trace: include tools.h 2020-09-25 17:54:48 +02:00
cfgparse-global.c BUG/MINOR: cfgparse: use the GLOBAL not LISTEN keywords list for spell checking 2021-03-15 09:15:18 +01:00
cfgparse-listen.c REORG: split proxy allocation functions 2021-03-26 15:28:33 +01:00
cfgparse-ssl.c BUILD: ssl: guard ecdh functions with SSL_CTX_set_tmp_ecdh macro 2021-03-24 09:52:37 +01:00
cfgparse-tcp.c MINOR: server: prepare parsing for dynamic servers 2021-03-18 15:51:12 +01:00
cfgparse-unix.c MINOR: listener: create a new struct "settings" in bind_conf 2020-09-16 20:13:13 +02:00
cfgparse.c MINOR: sample: make smp_resolve_args() return an allocate error message 2021-03-26 16:23:45 +01:00
channel.c CLEANUP: channel: fix comment in ci_putblk. 2021-02-13 09:43:17 +01:00
check.c MEDIUM: dynbuf: remove last usages of b_alloc_margin() 2021-03-22 16:27:59 +01:00
chunk.c CLEANUP: include: tree-wide alphabetical sort of include files 2020-06-11 10:18:59 +02:00
cli.c MINOR: cli: implement experimental-mode 2021-03-18 15:37:05 +01:00
compression.c CLEANUP: compression: do not test for buffer before calling b_alloc() 2021-03-22 16:16:22 +01:00
connection.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
da.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
debug.c BUG/MEDIUM: debug/lua: Use internal hlua function to dump the lua traceback 2021-03-24 16:35:23 +01:00
dgram.c REORG: dgram: rename proto_udp to dgram 2020-06-11 10:18:59 +02:00
dict.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
dns.c MEDIUM: task: extend the state field to 32 bits 2021-03-05 08:30:08 +01:00
dynbuf.c MINOR: dynbuf: pass offer_buffers() the number of buffers instead of a threshold 2021-02-20 12:38:18 +01:00
eb32sctree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
eb32tree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
eb64tree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
ebimtree.c CLEANUP: include: tree-wide alphabetical sort of include files 2020-06-11 10:18:59 +02:00
ebistree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
ebmbtree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
ebpttree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
ebsttree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
ebtree.c BUG/MEDIUM: ebtree: use a byte-per-byte memcmp() to compare memory blocks 2020-06-16 11:30:33 +02:00
ev_epoll.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
ev_evports.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
ev_kqueue.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
ev_poll.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
ev_select.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
extcheck.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
fcgi-app.c REORG: global: move initcall register code in a dedicated file 2021-03-26 15:28:33 +01:00
fcgi.c CLEANUP: include: tree-wide alphabetical sort of include files 2020-06-11 10:18:59 +02:00
fd.c BUG/MEDIUM: fd: Take the fd_mig_lock when closing if no DWCAS is available. 2021-03-25 07:34:35 +01:00
filters.c CLEANUP: filters: use pool_zalloc() in flt_stream_add_filter() 2021-03-22 23:17:56 +01:00
fix.c CLEANUP: assorted typo fixes in the code and comments 2020-12-21 11:24:48 +01:00
flt_http_comp.c CLEANUP: compression: do not test for buffer before calling b_alloc() 2021-03-22 16:16:22 +01:00
flt_spoe.c CLEANUP: spoe: use pool_zalloc() instead of pool_alloc+memset 2021-03-22 23:18:26 +01:00
flt_trace.c CLEANUP: Use istadv(const struct ist, const size_t) whenever possible 2021-03-03 05:07:10 +01:00
freq_ctr.c BUG/MEDIUM: freq_ctr/threads: use the global_now_ms variable 2021-03-23 09:03:37 +01:00
frontend.c CLEANUP: frontend: use pool_zalloc() in frontend_accept() 2021-03-22 23:18:54 +01:00
h1.c MEDIUM: h1: add a WebSocket key on handshake if needed 2021-01-28 16:37:14 +01:00
h1_htx.c MINOR: h1: Raise the chunk size limit up to (2^52 - 1) 2021-01-28 16:37:14 +01:00
h2.c CLEANUP: Replace for loop with only a condition by while 2021-03-05 08:28:53 +01:00
haproxy.c MINOR: proxy: implement a free_proxy function 2021-03-26 15:28:33 +01:00
hash.c REORG: include: move base64.h, errors.h and hash.h from common to to haproxy/ 2020-06-11 10:18:56 +02:00
hlua.c MINOR: lua: properly allocate the lua Socket servers 2021-03-26 15:28:33 +01:00
hlua_fcn.c BUG/MINOR: hlua: Don't strip last non-LWS char in hlua_pushstrippedstring() 2021-03-03 19:48:12 +01:00
hpack-dec.c CLEANUP: Use isttest(const struct ist) whenever possible 2021-03-03 05:07:10 +01:00
hpack-enc.c CLEANUP: include: tree-wide alphabetical sort of include files 2020-06-11 10:18:59 +02:00
hpack-huff.c REORG: include: move hpack*.h to haproxy/ and split hpack-tbl 2020-06-11 10:18:57 +02:00
hpack-tbl.c CLEANUP: include: tree-wide alphabetical sort of include files 2020-06-11 10:18:59 +02:00
http.c MINOR: http: Add HTTP 501-not-implemented error message 2021-01-21 15:21:12 +01:00
http_acl.c CLEANUP: acl: don't reference the generic pattern deletion function anymore 2020-11-05 19:27:09 +01:00
http_act.c BUG/MEDIUM: stick-tables: fix ref counter in table entry using multiple http tracksc. 2021-03-11 14:14:44 +01:00
http_ana.c CLEANUP: l7-retries: do not test the buffer before calling b_alloc() 2021-03-22 16:17:37 +01:00
http_conv.c MINOR: http-conv: Don't check if argument list is set in sample converters 2021-01-29 13:26:02 +01:00
http_fetch.c BUG/MINOR: http_fetch: make hdr_ip() reject trailing characters 2021-03-25 15:30:06 +01:00
http_htx.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
http_rules.c MINOR: http-rules: suggest approaching action names on mismatch 2021-03-12 14:13:21 +01:00
htx.c CLEANUP: Use istadv(const struct ist, const size_t) whenever possible 2021-03-03 05:07:10 +01:00
init.c REORG: global: move initcall register code in a dedicated file 2021-03-26 15:28:33 +01:00
lb_chash.c MINOR: lb/chash: use a read lock in chash_get_server_hash() 2020-10-17 20:15:49 +02:00
lb_fas.c OPTIM: lb-first: do not take the server lock on take_conn/drop_conn 2021-02-18 10:06:45 +01:00
lb_fwlc.c OPTIM: lb-leastconn: do not unlink the server if it did not change 2021-02-18 10:06:45 +01:00
lb_fwrr.c MINOR: backend: replace the lbprm lock with an rwlock 2020-10-17 18:51:41 +02:00
lb_map.c MINOR: lb/map: use seek lock and read locks where appropriate 2020-10-17 19:04:27 +02:00
listener.c MINOR: cfgparse/bind: suggest correct spelling for unknown bind keywords 2021-03-12 14:13:21 +01:00
log.c MINOR: cfgparse/bind: suggest correct spelling for unknown bind keywords 2021-03-12 14:13:21 +01:00
lru.c MINOR: lru: new function to delete <nb> least recently used keys 2016-01-11 07:31:35 +01:00
mailers.c CLEANUP: mailers: use pool_zalloc() in enqueue_one_email_alert() 2021-03-22 23:19:13 +01:00
map.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
mqtt.c CLEANUP: assorted typo fixes in the code and comments 2020-12-21 11:24:48 +01:00
mux_fcgi.c MEDIUM: dynbuf: remove last usages of b_alloc_margin() 2021-03-22 16:27:59 +01:00
mux_h1.c BUG/MEDIUM: mux-h1: make h1_shutw_conn() idempotent 2021-03-26 09:29:38 +01:00
mux_h2.c MEDIUM: dynbuf: remove last usages of b_alloc_margin() 2021-03-22 16:27:59 +01:00
mux_pt.c CLEANUP: task: make sure tasklet handlers always indicate their statuses 2021-03-13 11:30:19 +01:00
mworker-prog.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
mworker.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
namespace.c REORG: include: move the error reporting functions to from log.h to errors.h 2020-06-11 10:18:59 +02:00
pattern.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
payload.c MINOR: config: Deprecate and ignore tune.chksize global option 2020-11-27 10:30:23 +01:00
peers.c MEDIUM: task: extend the state field to 32 bits 2021-03-05 08:30:08 +01:00
pipe.c CLEANUP: include: tree-wide alphabetical sort of include files 2020-06-11 10:18:59 +02:00
pool.c CLEANUP: mark defproxy as const on parse tune.fail-alloc 2021-03-22 11:50:31 +01:00
proto_quic.c MEDIUM: connections: Introduce a new XPRT method, start(). 2021-03-19 15:33:04 +01:00
proto_sockpair.c MEDIUM: connections: Introduce a new XPRT method, start(). 2021-03-19 15:33:04 +01:00
proto_tcp.c MEDIUM: connections: Introduce a new XPRT method, start(). 2021-03-19 15:33:04 +01:00
proto_udp.c MINOR: udp: export udp_suspend_receiver() and udp_resume_receiver() 2020-12-08 18:10:18 +01:00
proto_uxdg.c BUG/MINOR: protocol: add missing support of dgram unix socket. 2021-03-18 18:30:29 +01:00
proto_uxst.c MEDIUM: connections: Introduce a new XPRT method, start(). 2021-03-19 15:33:04 +01:00
protocol.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
proxy.c MINOR: proxy: define cap PR_CAP_LUA 2021-03-26 15:28:33 +01:00
qpack-tbl.c CLEANUP: qpack: Wrong comment about the draft for QPACK static header table. 2021-01-04 12:31:28 +01:00
queue.c MINOR: lb/api: let callers of take_conn/drop_conn tell if they have the lock 2021-02-18 10:06:45 +01:00
quic_cc.c MINOR: quic: Import C source code files for QUIC protocol. 2020-12-23 11:57:26 +01:00
quic_cc_newreno.c MINOR: quic: Add traces to congestion avoidance NewReno callback. 2020-12-23 11:57:26 +01:00
quic_frame.c CLEANUP: assorted typo fixes in the code and comments 2021-01-06 16:26:50 +01:00
quic_sock.c MEDIUM: quic: Fix build. 2021-03-19 20:09:22 +01:00
quic_tls.c MINOR: quic: Update the initial salt to that of draft-29. 2020-12-23 11:57:26 +01:00
raw_sock.c MINOR: raw_sock: Add a close method. 2021-03-19 15:33:04 +01:00
regex.c OPTIM: regex: PCRE2 use JIT match when JIT optimisation occured. 2020-08-14 07:53:40 +02:00
resolvers.c REORG: global: move initcall register code in a dedicated file 2021-03-26 15:28:33 +01:00
ring.c MINOR: ring: adds new ring_init function. 2021-02-13 09:43:17 +01:00
sample.c BUILD: ssl: use EVP_CIPH_GCM_MODE macro instead of HA_OPENSSL_VERSION 2021-03-26 23:16:25 +01:00
server.c CLEANUP: assorted typo fixes in the code and comments 2021-03-20 09:28:58 +01:00
server_state.c BUG/MINOR: server-state: use the argument, not the global state 2021-03-12 14:13:07 +01:00
session.c MEDIUM: connections: Introduce a new XPRT method, start(). 2021-03-19 15:33:04 +01:00
sha1.c BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
shctx.c REORG: include: split global.h into haproxy/global{,-t}.h 2020-06-11 10:18:58 +02:00
signal.c REORG: include: move the error reporting functions to from log.h to errors.h 2020-06-11 10:18:59 +02:00
sink.c REORG: server: use flags for parse_server 2021-03-18 15:37:05 +01:00
sock.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
sock_inet.c MINOR: protocol: add a ->set_port() helper to address families 2020-12-04 15:08:00 +01:00
sock_unix.c CLEANUP: protocol: remove the now unused <handler> field of proto_fam->bind() 2020-10-15 21:47:56 +02:00
ssl_ckch.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
ssl_crtlist.c BUG/MINOR: ssl: Prevent removal of crt-list line if the instance is a default one 2021-03-26 13:06:39 +01:00
ssl_sample.c BUILD: ssl: introduce fine guard for ssl random extraction functions 2021-03-26 15:19:07 +01:00
ssl_sock.c BUG/MINOR: ssl: Fix update of default certificate 2021-03-26 13:06:29 +01:00
ssl_utils.c CLEANUP: ssl: ssl_sock_crt2der semicolon and spaces 2020-08-07 15:38:40 +02:00
stats.c MINOR: stats: export function to allocate extra proxy counters 2021-03-18 15:52:07 +01:00
stick_table.c MEDIUM: task: extend the state field to 32 bits 2021-03-05 08:30:08 +01:00
stream.c MEDIUM: dynbuf: remove last usages of b_alloc_margin() 2021-03-22 16:27:59 +01:00
stream_interface.c CLEANUP: task: make sure tasklet handlers always indicate their statuses 2021-03-13 11:30:19 +01:00
task.c MINOR: task: give the scheduler a bit more flexibility in the runqueue size 2021-03-10 11:15:34 +01:00
tcp_act.c BUG/MEDIUM: session: NULL dereference possible when accessing the listener 2021-03-09 12:51:42 +01:00
tcp_rules.c CLEANUP: tcp-rules: Fix a typo in error messages about expect-netscaler-cip 2021-03-19 15:41:16 +01:00
tcp_sample.c MINOR: listener: prefer to retrieve the socket's settings via the receiver 2020-09-16 22:08:07 +02:00
tcpcheck.c CLEANUP: tcpcheck: use pool_zalloc() instead of pool_alloc+memset 2021-03-22 23:20:03 +01:00
thread.c BUG/MEDIUM: thread: Fix a deadlock if an isolated thread is marked as harmless 2021-03-25 14:31:50 +01:00
time.c MINOR: time: also provide a global, monotonic global_now_ms timer 2021-03-23 09:01:37 +01:00
tools.c MINOR: tools: make url2ipv4 return the exact number of bytes parsed 2021-03-25 15:18:47 +01:00
trace.c CLEANUP: Use isttest(const struct ist) whenever possible 2021-03-03 05:07:10 +01:00
uri_auth.c CLEANUP: Compare the return value of XXXcmp() functions with zero 2021-01-04 10:09:02 +01:00
vars.c MEDIUM: cli: add a new experimental "set var" command 2021-03-26 16:57:43 +01:00
version.c BUILD: Fix build by including haproxy/global.h 2020-06-16 23:36:04 +02:00
wdt.c CLEANUP: config: Return ERR_NONE from config callbacks instead of 0 2020-11-13 16:26:10 +01:00
wurfl.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
xprt_handshake.c MEDIUM: connections: Implement a start() method for xprt_handshake. 2021-03-19 15:33:04 +01:00
xprt_quic.c CLEANUP: quic: use pool_zalloc() instead of pool_alloc+memset 2021-03-22 23:20:21 +01:00