From 7d412265cd9a712846a14d1980d82ad88d18d7e9 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 25 Jul 2007 00:28:06 +0200 Subject: [PATCH] [MINOR] fix backend's weight in the stats page. The GCD used when computing the servers' weights causes the total weight of the backend to appear lower than expected because it is divided by the GCD. Easy solution consists in recomputing the GCD from the first server and apply it to the global weight. --- src/proto_http.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/proto_http.c b/src/proto_http.c index f717bdf32..10420818c 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -3848,9 +3848,18 @@ int produce_content_stats_proxy(struct session *s, struct proxy *px) case DATA_ST_PX_BE: /* print the backend */ if (px->cap & PR_CAP_BE) { + int gcd = 1; + if (px->map_state & PR_MAP_RECALC) recalc_server_map(px); + /* The GCD which was computed causes the total effective + * weight to appear lower than all weights. Let's + * recompute it. + */ + if (px->srv && px->srv->eweight) + gcd = px->srv->uweight / px->srv->eweight; + chunk_printf(&msg, sizeof(trash), /* name */ "Backend" @@ -3879,7 +3888,7 @@ int produce_content_stats_proxy(struct session *s, struct proxy *px) px->denied_req, px->denied_resp, px->failed_conns, px->failed_resp, (px->srv_map_sz > 0 || !px->srv) ? "UP" : "DOWN", - px->srv_map_sz, px->srv_act, px->srv_bck); + px->srv_map_sz * gcd, px->srv_act, px->srv_bck); if (buffer_write_chunk(rep, &msg) != 0) return 0;