mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-27 07:02:11 +00:00
BUG/MINOR: server: reject enabled for dynamic server
Since their first implementation, dynamic servers are created into maintenance state. This has been done purposely to avoid immediate activation of a newly inserted server. However, this principle is incompatible if "enabled" keyword is used on "add server". The newly created instance will be unreacheable as proxy load-balancing algorithm is not informed of its presence via srv_lb_propagate(). The new server could be unblocked by toggling its state with "disable server" / "enable server" commands, which will trigger srv_lb_propagate() invocation. To avoid this unexpected state, simply forbid "enabled" keyword for dynamic servers. In the long-term, it could be possible to re authorize it but at least this requires to call srv_lb_propagate() on dynamic server creation. This should fix github issue #2497. This patch should not be backported as-is, to avoid breaking dynamic servers API on stable versions. "enabled" should instead be ignored for them. This will be implemented in a dedicated patch on top of 2.9.
This commit is contained in:
parent
28dcb7bb64
commit
250c19032f
@ -1696,7 +1696,6 @@ add server <backend>/<server> [args]*
|
||||
- crt
|
||||
- disabled
|
||||
- downinter
|
||||
- enabled
|
||||
- error-limit
|
||||
- fall
|
||||
- fastinter
|
||||
|
@ -2218,7 +2218,7 @@ static struct srv_kw_list srv_kws = { "ALL", { }, {
|
||||
{ "backup", srv_parse_backup, 0, 1, 1 }, /* Flag as backup server */
|
||||
{ "cookie", srv_parse_cookie, 1, 1, 0 }, /* Assign a cookie to the server */
|
||||
{ "disabled", srv_parse_disabled, 0, 1, 1 }, /* Start the server in 'disabled' state */
|
||||
{ "enabled", srv_parse_enabled, 0, 1, 1 }, /* Start the server in 'enabled' state */
|
||||
{ "enabled", srv_parse_enabled, 0, 1, 0 }, /* Start the server in 'enabled' state */
|
||||
{ "error-limit", srv_parse_error_limit, 1, 1, 1 }, /* Configure the consecutive count of check failures to consider a server on error */
|
||||
{ "ws", srv_parse_ws, 1, 1, 1 }, /* websocket protocol */
|
||||
{ "id", srv_parse_id, 1, 0, 1 }, /* set id# of server */
|
||||
|
Loading…
Reference in New Issue
Block a user