haproxy/include/proto
Willy Tarreau e73256fd2a BUG/MEDIUM: task/h2: add an idempotent task removal fucntion
Previous commit 3ea351368 ("BUG/MEDIUM: h2: Remove the tasklet from the
task list if unsubscribing.") uncovered an issue which needs to be
addressed in the scheduler's API. The function task_remove_from_task_list()
was initially designed to remove a task from the running tasklet list from
within the scheduler, and had to be used in h2 to abort pending I/O events.
However this function was not designed to be idempotent, occasionally
causing a double removal from the tasklet list, with the second doing
nothing but affecting the apparent tasks count and making haproxy use
100% CPU on some tests consisting in stopping the client during some
transfers. The h2_unsubscribe() function can sometimes be called upon
stream exit after an error where the tasklet was possibly already
removed, so it.

This patch does 2 things :
  - it renames task_remove_from_task_list() to
    __task_remove_from_tasklet_list() to discourage users from calling
    it. Also note the fix in the naming since it's a tasklet list and
    not a task list. This function is still uesd from the scheduler.
  - it adds a new, idempotent, task_remove_from_tasklet_list() function
    which does nothing if the task is already not in the tasklet list.

This patch will need to be backported where the commit above is backported.
2019-03-25 18:02:54 +01:00
..
acl.h
action.h
activity.h MINOR: activity: add configuration and CLI support for "profiling.tasks" 2018-11-22 11:48:51 +01:00
applet.h MEDIUM: applets: Use the new _HA_ATOMIC_* macros. 2019-03-11 17:02:37 +01:00
arg.h
auth.h
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 function to skips output bytes from an HTX channel 2019-02-26 14:04:23 +01:00
checks.h
cli.h MINOR: cli: add a few missing includes in proto/cli.h 2018-11-22 11:47:53 +01:00
compression.h
connection.h MEDIUM: connections: Use _HA_ATOMIC_* 2019-03-14 15:55:15 +01:00
dns.h
fd.h MEDIUM: fd: Use the new _HA_ATOMIC_* macros. 2019-03-11 17:02:37 +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 MEDIUM: freq_ctr: Use the new _HA_ATOMIC_* macros. 2019-03-11 17:02:37 +01:00
frontend.h
hdr_idx.h
hlua_fcn.h
hlua.h
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
lb_chash.h MINOR: lb: allow redispatch when using consistent hash 2019-01-02 20:22:17 +01:00
lb_fas.h
lb_fwlc.h
lb_fwrr.h
lb_map.h
listener.h MINOR: listener: introduce listener_backlog() to report the backlog value 2019-02-28 17:05:29 +01:00
log.h MEDIUM: initcall: use initcalls for a few initialization functions 2018-11-26 19:50:32 +01:00
map.h
mux_pt.h
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
pattern.h
payload.h
peers.h BUG/MEDIUM: peers: Missing peer initializations. 2019-02-12 19:49:22 +01:00
pipe.h
port_range.h
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
proto_tcp.h
proto_udp.h
protocol_buffers.h MINOR: sample: Extract some protocol buffers specific code. 2019-03-06 15:36:02 +01:00
protocol.h CLEANUP: Fix a typo in the protocol header file 2018-12-02 18:42:49 +01:00
proxy.h MEDIUM: proxy: Use the new _HA_ATOMIC_* macros. 2019-03-11 17:02:37 +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
sample.h CLEANUP: Fix typos in the sample subsystem 2018-11-18 22:26:42 +01:00
server.h MEDIUM: server: Use the new _HA_ATOMIC_* macros. 2019-03-11 17:02:37 +01:00
session.h BUG/MEDIUM: connections: Don't forget to remove CO_FL_SESS_IDLE. 2019-01-31 19:38:25 +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: Move stuff about the stats status codes in stats files 2019-03-15 14:34:59 +01:00
stick_table.h
stream_interface.h MINOR: stream-int: add a new flag to mention that we want the connection to be killed 2019-01-31 19:38:25 +01:00
stream.h MINOR: init: report the list of optionally available services 2019-03-19 08:08:10 +01:00
task.h BUG/MEDIUM: task/h2: add an idempotent task removal fucntion 2019-03-25 18:02:54 +01:00
tcp_rules.h
template.h
vars.h