mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-03-31 15:47:10 +00:00
BUG/MEDIUM: checks: servers must not start in slowstart mode
In 1.5-dev20, commit bb9665e
(BUG/MEDIUM: checks: ensure we can enable
a server after boot) tried to fix a side effect of having both regular
checks and agent checks condition the up state propagation to servers.
Unfortunately it was still not fine because after this fix, servers
which make use of slowstart start in this mode. We must not check
the agent's health if agent checks are not enabled, and likewise,
we must not check the regular check's health if they are not enabled.
Reading the code, it seems like we could avoid entering this function
at all if (s->state & SRV_RUNNING) is not satisfied. Let's reserve
this for a later patch if needed.
Thanks to Sander Klein for reporting this abnormal situation.
This commit is contained in:
parent
e38feed966
commit
02541e8be2
@ -480,8 +480,10 @@ void set_server_up(struct check *check) {
|
||||
}
|
||||
|
||||
if (s->track ||
|
||||
(s->check.health == s->check.rise && (s->agent.health >= s->agent.rise || !(s->agent.state & CHK_ST_ENABLED))) ||
|
||||
(s->agent.health == s->agent.rise && (s->check.health >= s->check.rise || !(s->check.state & CHK_ST_ENABLED)))) {
|
||||
((s->check.state & CHK_ST_ENABLED) && (s->check.health == s->check.rise) &&
|
||||
(s->agent.health >= s->agent.rise || !(s->agent.state & CHK_ST_ENABLED))) ||
|
||||
((s->agent.state & CHK_ST_ENABLED) && (s->agent.health == s->agent.rise) &&
|
||||
(s->check.health >= s->check.rise || !(s->check.state & CHK_ST_ENABLED)))) {
|
||||
if (s->proxy->srv_bck == 0 && s->proxy->srv_act == 0) {
|
||||
if (s->proxy->last_change < now.tv_sec) // ignore negative times
|
||||
s->proxy->down_time += now.tv_sec - s->proxy->last_change;
|
||||
|
Loading…
Reference in New Issue
Block a user