From: Willy Tarreau Date: Tue, 1 Dec 2020 09:47:18 +0000 (+0100) Subject: BUG/MINOR: mux-h2/stats: not all GOAWAY frames are errors X-Git-Tag: v2.4-dev3~138 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f965b2ad136b6487571f9a8fb0b3e58f778c002c;p=thirdparty%2Fhaproxy.git BUG/MINOR: mux-h2/stats: not all GOAWAY frames are errors The stats on haproxy.org reported ~12k GOAWAY for ~34k connections, with only 2 protocol errorss. It turns out that the GOAWAY frame counter added in commit a8879238c ("MINOR: mux-h2: report detected error on stats") matches a bit too many situations. First it counts those which are not sent as well as failed retries, second it counts as errors the cases of attempts to cleanly close, while it's titled "GOAWAY sent on detected error". Let's address this by moving the counter up one line and excluding the clean codes. This can be backported to 2.3. --- diff --git a/src/mux_h2.c b/src/mux_h2.c index ce39f750b5..741708d19d 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -1803,8 +1803,18 @@ static int h2c_send_goaway_error(struct h2c *h2c, struct h2s *h2s) } } h2c->flags |= H2_CF_GOAWAY_SENT; + + /* some codes are not for real errors, just attempts to close cleanly */ + switch (h2c->errcode) { + case H2_ERR_NO_ERROR: + case H2_ERR_ENHANCE_YOUR_CALM: + case H2_ERR_REFUSED_STREAM: + case H2_ERR_CANCEL: + break; + default: + HA_ATOMIC_ADD(&h2c->px_counters->goaway_resp, 1); + } out: - HA_ATOMIC_ADD(&h2c->px_counters->goaway_resp, 1); TRACE_LEAVE(H2_EV_TX_FRAME|H2_EV_TX_GOAWAY, h2c->conn); return ret; }