mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-11-28 14:21:00 +01:00
MEDIUM: session: don't apply the retry delay when redispatching
The retry delay is only useful when sticking to a same server. During a redispatch, it's useless and counter-productive if we're sure to switch to another server, which is almost guaranteed when there's more than one server and the balancing algorithm is round robin, so better not pass via the turn-around state in this case. It could be done as well for leastconn, but there's a risk of always killing the delay after the recovery of a server in a farm where it's almost guaranteed to take most incoming traffic. So better only kill the delay when using round robin.
This commit is contained in:
parent
b02906659b
commit
db6d012270
@ -910,8 +910,13 @@ static int sess_update_st_cer(struct session *s, struct stream_interface *si)
|
||||
if (!si->err_type)
|
||||
si->err_type = SI_ET_CONN_ERR;
|
||||
|
||||
si->state = SI_ST_TAR;
|
||||
si->exp = tick_add(now_ms, MS_TO_TICKS(delay));
|
||||
/* only wait when we're retrying on the same server */
|
||||
if (si->state == SI_ST_ASS ||
|
||||
(s->be->lbprm.algo & BE_LB_KIND) != BE_LB_KIND_RR ||
|
||||
(s->be->srv_act <= 1)) {
|
||||
si->state = SI_ST_TAR;
|
||||
si->exp = tick_add(now_ms, MS_TO_TICKS(delay));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user