mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-23 06:41:32 +02:00
BUG/MEDIUM: servers: check the queues once enabling a server
Commit 64cc49c ("MAJOR: servers: propagate server status changes asynchronously.") heavily changed the way the server states are updated since they became asynchronous. During this change, some code was lost, which is used to shut down some sessions from a backup server and to pick pending connections from a proxy once a server is turned back from maintenance to ready state. The effect is that when temporarily disabling a server, connections stay in the backend's queue, and when re-enabling it, they are not picked and they expire in the backend's queue. Now they're properly picked again. This fix must be backported to 1.8.
This commit is contained in:
parent
ab657ce251
commit
6a78e61694
13
src/server.c
13
src/server.c
@ -4849,6 +4849,19 @@ void srv_update_status(struct server *s)
|
|||||||
if (prev_srv_count && s->proxy->srv_bck == 0 && s->proxy->srv_act == 0)
|
if (prev_srv_count && s->proxy->srv_bck == 0 && s->proxy->srv_act == 0)
|
||||||
set_backend_down(s->proxy);
|
set_backend_down(s->proxy);
|
||||||
|
|
||||||
|
/* If the server is set with "on-marked-up shutdown-backup-sessions",
|
||||||
|
* and it's not a backup server and its effective weight is > 0,
|
||||||
|
* then it can accept new connections, so we shut down all streams
|
||||||
|
* on all backup servers.
|
||||||
|
*/
|
||||||
|
if ((s->onmarkedup & HANA_ONMARKEDUP_SHUTDOWNBACKUPSESSIONS) &&
|
||||||
|
!(s->flags & SRV_F_BACKUP) && s->next_eweight)
|
||||||
|
srv_shutdown_backup_streams(s->proxy, SF_ERR_UP);
|
||||||
|
|
||||||
|
/* check if we can handle some connections queued at the proxy. We
|
||||||
|
* will take as many as we can handle.
|
||||||
|
*/
|
||||||
|
xferred = pendconn_grab_from_px(s);
|
||||||
}
|
}
|
||||||
else if (s->next_admin & SRV_ADMF_MAINT) {
|
else if (s->next_admin & SRV_ADMF_MAINT) {
|
||||||
/* remaining in maintenance mode, let's inform precisely about the
|
/* remaining in maintenance mode, let's inform precisely about the
|
||||||
|
Loading…
x
Reference in New Issue
Block a user