haproxy/include/proto
Conrad Hoffmann 041751c13a BUG/MEDIUM: polling: fix possible CPU hogging of worker processes after receiving SIGUSR1.
When run in daemon mode (i.e. with at least one forked process) and using
the epoll poller, sending USR1 (graceful shutdown) to the worker processes
can cause some workers to start running at 100% CPU. Precondition is having
an established HTTP keep-alive connection when the signal is received.

The cloned (during fork) listening sockets do not get closed in the parent
process, thus they do not get removed from the epoll set automatically
(see man 7 epoll). This can lead to the process receiving epoll events
that it doesn't feel responsible for, resulting in an endless loop around
epoll_wait() delivering these events.

The solution is to explicitly remove these file descriptors from the epoll
set. To not degrade performance, care was taken to only do this when
neccessary, i.e. when the file descriptor was cloned during fork.

Signed-off-by: Conrad Hoffmann <conrad@soundcloud.com>
[wt: a backport to 1.4 could be studied though chances to catch the bug are low]
2014-05-20 14:57:36 +02:00
..
acl.h MINOR: pattern: store configuration reference for each acl or map pattern. 2014-03-17 18:06:07 +01:00
arg.h
auth.h MEDIUM: pattern: The match function browse itself the list or the tree. 2014-03-17 18:06:07 +01:00
backend.h MINOR: server: create srv_was_usable() from srv_is_usable() and use a pointer 2014-05-13 22:34:55 +02:00
channel.h CLEANUP: buffers: remove unused function buffer_contig_space_with_res() 2014-04-24 17:19:22 +02:00
checks.h MINOR: checks: use an inline function for health_adjust() 2013-12-31 23:47:37 +01:00
compression.h
connection.h MEDIUM: connection: Implement and extented PROXY Protocol V2 2014-05-09 08:25:38 +02:00
cttproxy.h
dumpstats.h MEDIUM: stats: reimplement HTTP keep-alive on the stats page 2014-04-24 17:24:56 +02:00
fd.h BUG/MEDIUM: polling: fix possible CPU hogging of worker processes after receiving SIGUSR1. 2014-05-20 14:57:36 +02:00
freq_ctr.h
frontend.h
hdr_idx.h
lb_chash.h
lb_fas.h
lb_fwlc.h
lb_fwrr.h
lb_map.h
listener.h
log.h MINOR: configuration: File and line propagation 2014-03-17 18:06:08 +01:00
map.h MINOR: map: export parse output sample functions 2013-12-12 15:44:05 +01:00
obj_type.h MINOR: obj: introduce a new type appctx 2013-12-09 15:40:22 +01:00
pattern.h MEDIUM: pattern: use ebtree's longest match to index/lookup string beginning 2014-05-10 08:53:48 +02:00
payload.h
peers.h
pipe.h
port_range.h
proto_http.h MINOR: http: export the smp_fetch_cookie function 2014-05-02 18:05:15 +02:00
proto_tcp.h BUG/MEDIUM: stick-table: fix IPv4-to-IPv6 conversion in src_* fetches 2014-04-14 18:22:57 +02:00
proto_uxst.h
protocol.h
proxy.h MEDIUM: proxy: create a tree to store proxies by name 2014-03-15 07:48:35 +01:00
queue.h MINOR: server: create srv_was_usable() from srv_is_usable() and use a pointer 2014-05-13 22:34:55 +02:00
raw_sock.h
sample.h MINOR: configuration: File and line propagation 2014-03-17 18:06:08 +01:00
server.h MINOR: server: remove the SRV_DRAIN flag which can always be deduced 2014-05-13 22:18:13 +02:00
session.h MEDIUM: counters: stop relying on session flags at all 2014-01-28 23:34:45 +01:00
shctx.h BUG/MAJOR: ssl: Fallback to private session cache if current lock mode is not supported. 2014-05-08 22:46:32 +02:00
signal.h
ssl_sock.h MEDIUM: connection: Implement and extented PROXY Protocol V2 2014-05-09 08:25:38 +02:00
stick_table.h
stream_interface.h MEDIUM: stream-int: make si_connect() return an established state when possible 2013-12-31 23:32:12 +01:00
task.h
template.h