haproxy/src
Willy Tarreau 04bf98149b BUG/MEDIUM: servers: unbreak server weight propagation
This reverts commit 266b1a8 ("MEDIUM: server: Inherit CLI weight changes and
agent-check weight responses") from Michal Idzikowski, which is still broken.
It stops propagating weights at the first error encountered, leaving servers
in a random state depending on what LB algorithms are used on other servers
tracking the one experiencing the weight change. It's unsure what the best
way to address this is, but we cannot leave the servers in an inconsistent
state between farms. For example :

  backend site1
      mode http
      balance uri
      hash-type consistent
      server s1 127.0.0.1:8001 weight 10 track servers/s1

  backend site2
      mode http
      balance uri
      server s1 127.0.0.1:8001 weight 10 track servers/s1

  backend site3
      mode http
      balance uri
      hash-type consistent
      server s1 127.0.0.1:8001 weight 10 track servers/s1

  backend servers
      server s1 127.0.0.1:8001 weight 10 check inter 1s

The weight change is applied on "servers/s1". It tries to propagate
to the servers tracking it, which are site1/s1, site2/s1 and site3/s1.
Let's say that "weight 50%" is requested. The servers are linked in
reverse-order, so the change is applied to "servers/s1", then to
"site3/s1", then to "site2/s1" and this one fails and rejects the
change. The change is aborted and never propagated to "site1/s1",
which keeps the server in a different state from "site3/s1". At the
very least, in case of error, the changes should probably be unrolled.

Also the error reported on the CLI (when changing from the CLI) simply says :

  Backend is using a static LB algorithm and only accepts weights '0%' and '100%'.

Without more indications what the faulty backend is.

Let's revert this change for now, as initially feared it will definitely
cause more harm than good and at least needs to be revisited. It was never
backported to any stable branch so no backport is needed.
2017-04-13 15:09:26 +02:00
..
51d.c CLEANUP: 51d: move global settings out of the global section 2016-12-21 21:30:54 +01:00
acl.c BUG/MEDIUM: acl: don't free unresolved args in prune_acl_expr() 2017-04-13 12:20:52 +02:00
applet.c BUG/MAJOR: Fix how the list of entities waiting for a buffer is handled 2016-12-12 19:11:04 +01:00
arg.c BUG/MEDIUM: arg: ensure that we properly unlink unresolved arguments on error 2017-04-13 12:20:52 +02:00
auth.c CLEANUP: auth: use the build options list to report its support 2016-12-21 21:30:54 +01:00
backend.c CLEANUP: Replace repeated code to count usable servers with be_usable_srv() 2017-03-13 18:26:05 +01:00
base64.c [MINOR] add encode/decode function for 30-bit integers from/to base64 2010-10-30 19:04:33 +02:00
buffer.c CLEANUP: buffers: Remove buffer_bounce_realign function 2017-03-31 14:38:22 +02:00
cfgparse.c BUG/MINOR: config: missing goto out after parsing an incorrect ACL character 2017-04-12 18:57:04 +02:00
channel.c BUG/MEDIUM: buffers: Fix how input/output data are injected into buffers 2017-03-31 14:36:04 +02:00
checks.c MINOR: server: Add 'no-agent-check' server keyword. 2017-03-27 14:37:01 +02:00
chunk.c MINOR: chunks: implement a simple dynamic allocator for trash buffers 2017-02-08 11:16:29 +01:00
cli.c CLEANUP: connection: remove all direct references to raw_sock and ssl_sock 2016-12-22 23:26:38 +01:00
compression.c MINOR: compression: fix -vv output without zlib/slz 2017-01-11 16:11:11 +01:00
connection.c MEDIUM: connection: don't test for CO_FL_WAKE_DATA 2017-03-19 12:17:35 +01:00
da.c CLEANUP: da: move global settings out of the global section 2016-12-21 21:30:54 +01:00
dns.c BUG/MINOR: dns: Wrong address family used when creating IPv6 sockets. 2017-04-11 20:02:21 +02:00
ev_epoll.c MINOR: fd: add a new flag HAP_POLL_F_RDHUP to struct poller 2017-03-21 16:30:35 +01:00
ev_kqueue.c MEDIUM: kqueue: only set FD_POLL_IN when there are pending data 2017-03-21 16:35:17 +01:00
ev_poll.c OPTIM: poll: enable support for POLLRDHUP 2017-03-21 16:30:44 +01:00
ev_select.c MINOR: fd: add a new flag HAP_POLL_F_RDHUP to struct poller 2017-03-21 16:30:35 +01:00
fd.c CLEANUP: remove unneeded casts 2016-04-03 14:17:42 +02:00
filters.c BUG/MINOR: filters: Don't force the stream's wakeup when we wait in flt_end_analyze 2017-03-31 14:40:45 +02:00
flt_http_comp.c OPTIM: http: move all http character classs tables into a single one 2016-11-05 15:58:08 +01:00
flt_spoe.c MINOR: spoe: Add "max-frame-size" statement in spoe-agent section 2017-03-09 15:32:56 +01:00
flt_trace.c MINOR: filters: Add check_timeouts callback to handle timers expiration on streams 2016-11-21 15:29:58 +01:00
freq_ctr.c BUG/MINOR: time: frequency counters are not totally accurate 2012-12-29 21:50:07 +01:00
frontend.c MINOR: proxy: Add fe_name/be_name fetchers next to existing fe_id/be_id 2016-12-12 15:10:43 +01:00
haproxy-systemd-wrapper.c BUG/MEDIUM: systemd-wrapper: return correct exit codes 2016-11-03 20:34:20 +01:00
haproxy.c [RELEASE] Released version 1.8-dev1 2017-04-03 09:27:49 +02:00
hash.c MINOR: hash: add new function hash_crc32 2015-01-20 19:48:05 +01:00
hdr_idx.c OPTIM/MINOR: move the hdr_idx pools out of the proxy struct 2011-10-24 18:15:04 +02:00
hlua.c BUG/MAJOR: lua segmentation fault when the request is like 'GET ?arg=val HTTP/1.1' 2017-02-23 21:52:18 +01:00
hlua_fcn.c BUILD: lua: build failed on FreeBSD. 2016-12-23 18:03:43 +01:00
i386-linux-vsys.c MEDIUM: listener: add support for linux's accept4() syscall 2012-10-08 20:11:03 +02:00
lb_chash.c MEDIUM: server: Implement bounded-load hash algorithm 2016-10-25 20:21:32 +02:00
lb_fas.c REORG/MEDIUM: server: split server state and flags in two different variables 2014-05-22 11:27:00 +02:00
lb_fwlc.c REORG/MEDIUM: server: split server state and flags in two different variables 2014-05-22 11:27:00 +02:00
lb_fwrr.c REORG/MEDIUM: server: split server state and flags in two different variables 2014-05-22 11:27:00 +02:00
lb_map.c CLEANUP: remove unneeded casts 2016-04-03 14:17:42 +02:00
listener.c BUG/MEDIUM: listener: do not try to rebind another process' socket 2017-03-15 12:47:46 +01:00
log.c CLEANUP: connection: remove all direct references to raw_sock and ssl_sock 2016-12-22 23:26:38 +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 MEDIUM: Add parsing of mailers section 2015-02-03 00:24:16 +01:00
map.c BUG/MINOR: Fix "get map <map> <value>" CLI command 2017-03-13 18:25:53 +01:00
memory.c CLEANUP: memory: remove the now unused cli_parse_show_pools() function 2016-12-16 19:40:13 +01:00
namespace.c CLEANUP: namespaces: use the build options list to report it 2016-12-21 21:30:54 +01:00
pattern.c BUG/MINOR: pattern: Avoid memory leak on out-of-memory condition 2016-03-13 07:47:25 +01:00
payload.c BUG: payload: fix payload not retrieving arbitrary lengths 2017-03-20 07:25:37 +01:00
peers.c BUG/MEDIUM: peers: fix buffer overflow control in intdecode. 2017-03-30 12:12:46 +02:00
pipe.c BUILD/MINOR: silent a build warning in src/pipe.c (fcntl) 2011-10-24 17:09:22 +02:00
proto_http.c BUG/MEDIUM: http: Fix blocked HTTP/1.0 responses when compression is enabled 2017-03-31 14:40:42 +02:00
proto_tcp.c BUG/MEDIUM: tcp: don't require privileges to bind to device 2017-03-27 16:22:59 +02:00
proto_udp.c CLEANUP: fix inconsistency between fd->iocb, proto->accept and accept() 2016-04-14 11:18:22 +02:00
proto_uxst.c BUG/MINOR: unix: fix connect's polling in case no data are scheduled 2017-01-25 18:48:14 +01:00
protocol.c BUILD: protocol: fix some build errors on OpenBSD 2016-08-10 19:31:58 +02:00
proxy.c MEDIUM: global: add a 'hard-stop-after' option to cap the soft-stop time 2017-03-23 23:03:57 +01:00
queue.c MINOR: proxy: add 'served' field to proxy, equal to total of all servers' 2016-10-25 20:21:32 +02:00
raw_sock.c BUG/MINOR: raw_sock: always perfom the last recv if RDHUP is not available 2017-03-21 16:30:44 +01:00
rbtree.c [MINOR] imported the rbtree function from Linux kernel 2007-01-07 02:12:57 +01:00
regex.c MEDIUM: regex: pcre2 support 2016-12-28 12:51:51 +01:00
sample.c CLEANUP: Remove comment that's no longer valid 2017-03-13 18:26:05 +01:00
server.c BUG/MEDIUM: servers: unbreak server weight propagation 2017-04-13 15:09:26 +02:00
session.c CLEANUP: connection: completely remove CO_FL_WAKE_DATA 2017-03-19 12:18:27 +01:00
shctx.c MEDIUM: ssl: Add support for OpenSSL 1.1.0 2016-11-08 20:54:41 +01:00
signal.c MEDIUM: unblock signals on startup. 2016-04-20 10:53:12 +02:00
ssl_sock.c MINOR: server: Make 'default-server' support 'sni' keyword. 2017-03-27 14:37:01 +02:00
standard.c BUILD/MINOR: tools: fix build warning in debug_hexdump() 2017-04-11 08:01:17 +02:00
stats.c BUILD/MINOR: stats: remove unexpected argument to stats_dump_json_header() 2017-04-11 07:54:45 +02:00
stick_table.c BUG/MINOR: sample-fetches/stick-tables: bad type for the sample fetches sc*_get_gpt0 2017-01-05 16:04:05 +01:00
stream.c BUG/MINOR: http: Fix conditions to clean up a txn and to handle the next request 2017-03-31 14:36:20 +02:00
stream_interface.c BUG/MEDIUM: stream: fix client-fin/server-fin handling 2017-03-21 15:04:43 +01:00
task.c MINOR: task: Rename run_queue and run_queue_cur counters 2016-12-12 19:10:54 +01:00
tcp_rules.c MINOR: tcp-rules: check that the listener exists before updating its counters 2016-12-22 23:26:37 +01:00
time.c CLEANUP: time: curr_sec_ms doesn't need to be exported 2017-03-29 15:24:33 +02:00
trace.c BUG/MEDIUM: trace.c: rdtsc() is defined in two files 2016-04-09 22:27:01 +02:00
uri_auth.c CLEANUP: uniformize last argument of malloc/calloc 2016-04-03 14:17:42 +02:00
vars.c BUG/MEDIUM: variables: some variable name can hide another ones 2016-12-12 14:34:56 +01:00
wurfl.c CLEANUP: wurfl: move global settings out of the global section 2016-12-21 21:30:54 +01:00
xxhash.c CLEANUP: remove unneeded casts 2016-04-03 14:17:42 +02:00