haproxy/include/proto
Willy Tarreau 13afcb7ab3 BUG/MINOR: task: fix possibly missed event in inter-thread wakeups
There's a very small but existing uncertainty window when waking another
thread up where it is possible for task_wakeup() not to wake the other
task up because it's still running while this once is in the process of
finishing and loses its TASK_RUNNING flag. In this case the wakeup will
be missed.

The problem is that we have a single flag to store 3 states, since the
transition from running to sleeping isn't atomic. Thus we need to have
another flag to cover this part. This patch introduces TASK_QUEUED to
mention that the task is already in the run queue, running or not. This
bit will be removed while TASK_RUNNING is kept once dequeued, and will
be used when removing TASK_RUNNING to check if the task has been requeued.

It might be possible to slightly improve this but the occurrence rate
is quite low and we don't really need to complexify the scheduler to
optimize for a rare case.

The impact with the current code is very low since we have few inter-
thread wakeups. Most of them are caused by checks killing sessions.

This must be backported to 1.9.
2019-01-28 15:03:04 +01:00
..
acl.h MINOR: acl: Pass the ACLs as an explicit parameter of build_acl_cond 2017-10-31 11:36:12 +01:00
action.h MAJOR: chunks: replace struct chunk with struct buffer 2018-07-19 16:23:43 +02:00
activity.h MINOR: activity: add configuration and CLI support for "profiling.tasks" 2018-11-22 11:48:51 +01:00
applet.h MEDIUM: appctx: check for allocation attempts in buffer allocation callbacks 2018-11-11 10:18:37 +01:00
arg.h MINOR: sample: Moves ARGS underlying type from 32 to 64 bits. 2016-03-15 22:11:52 +01:00
auth.h MEDIUM: pattern: The match function browse itself the list or the tree. 2014-03-17 18:06:07 +01:00
backend.h MAJOR: connections: Defer mux creation for outgoing connection if alpn is set. 2018-11-22 19:52:23 +01:00
channel.h MINOR: channel/htx: Add the HTX version of channel_truncate/erase 2019-01-08 12:06:55 +01:00
checks.h BUILD: threads: Rename SPIN/RWLOCK macros using HA_ prefix 2017-11-07 11:10:24 +01:00
cli.h MINOR: cli: add a few missing includes in proto/cli.h 2018-11-22 11:47:53 +01:00
compression.h REORG: filters: Prepare creation of the HTTP compression filter 2016-02-09 14:53:15 +01:00
connection.h BUG/MEDIUM: connection: properly unregister the mux on failed initialization 2019-01-10 19:47:43 +01:00
dns.h BUG/MINOR: dns: Don't try to get the server lock if it's already held. 2017-11-06 18:34:24 +01:00
fd.h REORG: time/activity: move activity measurements to activity.{c,h} 2018-11-22 11:48:41 +01:00
filters.h MINOR: filters: Export the name of known filters 2018-12-11 17:09:31 +01:00
flt_http_comp.h MINOR: compression: Rename the function check_legacy_http_comp_flt() 2018-12-11 17:09:31 +01:00
freq_ctr.h MINOR: freq_ctr: add swrate_add_scaled() to work with large samples 2018-10-22 08:13:57 +02:00
frontend.h REORG/MAJOR: session: rename the "session" entity to "stream" 2015-04-06 11:23:56 +02:00
hdr_idx.h CLEANUP: pools: rename all pool functions and pointers to remove this "2" 2017-11-24 17:49:53 +01:00
hlua_fcn.h MINOR: lua: add utility function for check boolean argument 2016-11-24 21:35:10 +01:00
hlua.h BUILD/MINOR: lua: ensure that hlua_ctx_destroy is properly defined 2015-06-17 20:18:54 +02:00
http_fetch.h MINOR: http_fetch: Add smp_prefetch_htx 2018-11-18 22:09:00 +01:00
http_htx.h CLEANUP: h1: remove some occurrences of unneeded h1.h inclusions 2018-12-11 17:15:13 +01:00
http_rules.h REORG: http: move HTTP rules parsing to http_rules.c 2018-10-02 18:28:05 +02:00
lb_chash.h MINOR: lb: allow redispatch when using consistent hash 2019-01-02 20:22:17 +01:00
lb_fas.h MEDIUM: backend: add the 'first' balancing algorithm 2012-02-21 22:27:27 +01:00
lb_fwlc.h [CLEANUP] backend: move LB algos to individual files 2009-10-01 11:19:37 +02:00
lb_fwrr.h [CLEANUP] backend: move LB algos to individual files 2009-10-01 11:19:37 +02:00
lb_map.h MEDIUM: threads/lb: Make LB algorithms (lb_*.c) thread-safe 2017-10-31 13:58:31 +01:00
listener.h BUG/MEDIUM: threads/unix: Fix a deadlock when a listener is temporarily disabled 2018-03-16 11:19:07 +01:00
log.h MEDIUM: initcall: use initcalls for a few initialization functions 2018-11-26 19:50:32 +01:00
map.h MINOR: samples: rename some struct member from "smp" to "data" 2015-08-20 17:13:46 +02:00
mux_pt.h MEDIUM: connection: start to introduce a mux layer between xprt and data 2017-10-31 18:03:23 +01:00
obj_type.h MINOR: objtype: report a few missing types in names and base pointers 2018-12-18 16:31:10 +01:00
openssl-compat.h MINOR: ssl: generate-certificates for BoringSSL 2018-10-08 09:42:34 +02:00
pattern.h BUG/MEDIUM: map/acl: fix unwanted flags inheritance. 2017-07-04 10:45:53 +02:00
payload.h REORG/MAJOR: session: rename the "session" entity to "stream" 2015-04-06 11:23:56 +02:00
peers.h MINOR: peers: Make outgoing connection to SSL/TLS peers work. 2019-01-18 14:26:21 +01:00
pipe.h [MEDIUM] introduce pipe pools 2009-01-25 13:49:53 +01:00
port_range.h [MEDIUM] add support for binding to source port ranges during connect 2009-06-10 12:23:32 +02:00
proto_http.h MINOR: payload/htx: Adapt smp_fetch_len to be HTX aware 2018-12-14 16:03:34 +01:00
proto_sockpair.h MEDIUM: protocol: sockpair protocol 2018-09-12 07:20:17 +02:00
proto_tcp.h MINOR: connection: make conn_sock_drain() work for all socket families 2018-08-24 14:45:46 +02:00
proto_udp.h CLEANUP: fix inconsistency between fd->iocb, proto->accept and accept() 2016-04-14 11:18:22 +02:00
protocol.h CLEANUP: Fix a typo in the protocol header file 2018-12-02 18:42:49 +01:00
proxy.h REORG: config: extract the proxy parser into cfgparse-listen.c 2018-11-19 06:47:09 +01:00
queue.h MEDIUM: init: use initcall for all fixed size pool creations 2018-11-26 19:50:32 +01:00
raw_sock.h CLEANUP: connection: unexport raw_sock and ssl_sock 2016-12-22 23:26:38 +01:00
sample.h CLEANUP: Fix typos in the sample subsystem 2018-11-18 22:26:42 +01:00
server.h MINOR: cfgparse: SSL/TLS binding in "peers" sections. 2019-01-18 14:26:21 +01:00
session.h BUG/MINOR: stick_table: Prevent conn_cur from underflowing 2019-01-15 15:34:49 +01:00
shctx.h MINOR: shctx: Change max. object size type to unsigned int. 2018-10-26 04:54:40 +02:00
signal.h MEDIUM: initcall: use initcalls for a few initialization functions 2018-11-26 19:50:32 +01:00
spoe.h CLEANUP: Fix typos in the spoe subsystem 2018-11-18 22:26:42 +01:00
ssl_sock.h MINOR: ssl: add support of aes256 bits ticket keys on file and cli. 2019-01-14 19:32:58 +01:00
stats.h MINOR: stats: Add missing include 2018-10-12 16:00:32 +02:00
stick_table.h MINOR: stktable: provide an unchecked version of stktable_data_ptr() 2018-09-20 11:42:15 +02:00
stream_interface.h MEDIUM: stream-int: always mark pending outgoing SI_ST_CON 2019-01-24 19:06:43 +01:00
stream.h BUG/MINOR: stick_table: Prevent conn_cur from underflowing 2019-01-15 15:34:49 +01:00
task.h BUG/MINOR: task: fix possibly missed event in inter-thread wakeups 2019-01-28 15:03:04 +01:00
tcp_rules.h MINOR: action: Use trk_idx instead of tcp/http_trk_idx 2017-10-31 11:36:12 +01:00
template.h [CLEANUP] included common/version.h everywhere 2006-06-29 18:54:54 +02:00
vars.h MINOR: vars: Add 'unset-var' action/converter 2016-11-09 22:57:01 +01:00