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>
diff --git a/src/dumpstats.c b/src/dumpstats.c
index b505d4e..5704fe4 100644
--- a/src/dumpstats.c
+++ b/src/dumpstats.c
@@ -3906,13 +3906,14 @@
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)) {