From: Simon Horman Date: Thu, 23 Apr 2015 05:51:28 +0000 (+0900) Subject: MEDIUM: stats: Only report drain state in stats if server has SRV_ADMF_DRAIN set X-Git-Tag: v1.6-dev2~201 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4463d19d4889169c457189fe32bb06160a346355;p=thirdparty%2Fhaproxy.git 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 --- diff --git a/src/dumpstats.c b/src/dumpstats.c index b505d4e2e1..5704fe4fdc 100644 --- a/src/dumpstats.c +++ b/src/dumpstats.c @@ -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)) {