]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: proxy: add 'served' field to proxy, equal to total of all servers'
authorAndrew Rodland <andrewr@vimeo.com>
Tue, 25 Oct 2016 16:48:17 +0000 (12:48 -0400)
committerWilly Tarreau <w@1wt.eu>
Tue, 25 Oct 2016 18:21:32 +0000 (20:21 +0200)
This will allow lb_chash to determine the total active sessions for a
proxy without any computation.

Signed-off-by: Andrew Rodland <andrewr@vimeo.com>
include/types/proxy.h
src/queue.c
src/stream.c

index 2f4f9b9cb574c0422e7199346246028cea95bb61..028b3a731fa50463f97e3657b40b39d3b05ad211 100644 (file)
@@ -277,6 +277,7 @@ struct proxy {
        } tcp_rep;
        struct server *srv, defsrv;             /* known servers; default server configuration */
        int srv_act, srv_bck;                   /* # of servers eligible for LB (UP|!checked) AND (enabled+weight!=0) */
+       int served;                             /* # of active sessions currently being served */
        struct lbprm lbprm;                     /* load-balancing parameters */
        char *cookie_domain;                    /* domain used to insert the cookie */
        char *cookie_name;                      /* name of the cookie to look for */
index 1f27c498b0a08cafee61e816dada2f4dc1a425f7..08a6c3dd998e34ec4083828901d690f3d631e9a2 100644 (file)
@@ -126,6 +126,7 @@ struct stream *pendconn_get_next_strm(struct server *srv, struct proxy *px)
        strm->target = &srv->obj_type;
        stream_add_srv_conn(strm, srv);
        srv->served++;
+       srv->proxy->served++;
        if (px->lbprm.server_take_conn)
                px->lbprm.server_take_conn(srv);
 
index 151bcb0b9db3eb930b7cfb60789c7b910ac0b031..738a23ccc3133a6d92eb7af818d57fe1cb59de1d 100644 (file)
@@ -2515,6 +2515,7 @@ void sess_change_server(struct stream *sess, struct server *newsrv)
 
        if (sess->srv_conn) {
                sess->srv_conn->served--;
+               sess->srv_conn->proxy->served--;
                if (sess->srv_conn->proxy->lbprm.server_drop_conn)
                        sess->srv_conn->proxy->lbprm.server_drop_conn(sess->srv_conn);
                stream_del_srv_conn(sess);
@@ -2522,6 +2523,7 @@ void sess_change_server(struct stream *sess, struct server *newsrv)
 
        if (newsrv) {
                newsrv->served++;
+               newsrv->proxy->served++;
                if (newsrv->proxy->lbprm.server_take_conn)
                        newsrv->proxy->lbprm.server_take_conn(newsrv);
                stream_add_srv_conn(sess, newsrv);