MEDIUM: stats: Only report drain state in stats if server has SRV_ADMF_DRAIN set

There are some similarities between a weight of zero and the
administratively set drain state: both allow existing connections
to continue while not accepting any new ones.

However, when reporting a server state generally a distinction is made
between state=UP,weight=0 and state=DRAIN,weight=*. This patch makes
stats reporting consistent in this regard.

This patch does not alter the behaviour that if a server's weight
is zero then its stats row is blue when accessed via HTML. This remains
the case regardless of if the state is UP or DRAIN.

Signed-off-by: Simon Horman <horms@verge.net.au>
This commit is contained in:
Simon Horman 2015-04-23 14:51:28 +09:00 committed by Willy Tarreau
parent 837bfa74db
commit 4463d19d48

View File

@ -3906,13 +3906,14 @@ static int stats_dump_proxy_to_buffer(struct stream_interface *si, struct proxy
sv_colour = SRV_STATS_COLOUR_UP;
}
if (server_is_draining(sv)) {
if (sv_state == SRV_STATS_STATE_UP_GOING_DOWN) {
if (sv_state == SRV_STATS_STATE_UP && !svs->uweight)
sv_colour = SRV_STATS_COLOUR_DRAINING;
if (sv->admin & SRV_ADMF_DRAIN) {
if (sv_state == SRV_STATS_STATE_UP_GOING_DOWN)
sv_state = SRV_STATS_STATE_DRAIN_GOING_DOWN;
} else {
else
sv_state = SRV_STATS_STATE_DRAIN;
sv_colour = SRV_STATS_COLOUR_DRAINING;
}
}
if (sv_state == SRV_STATS_STATE_UP && !(svs->check.state & CHK_ST_ENABLED)) {