From 984814c2080a2efc8c955f8884aad7fd0eec0c80 Mon Sep 17 00:00:00 2001 From: Colin Kelley Date: Tue, 27 Jun 2023 07:03:24 -0700 Subject: [PATCH] issue #746: return 429 Too Many Requests if requests stack up Signed-off-by: Colin Kelley --- mysqld_exporter.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mysqld_exporter.go b/mysqld_exporter.go index 76fb107bf..cfc8be0d1 100644 --- a/mysqld_exporter.go +++ b/mysqld_exporter.go @@ -132,7 +132,16 @@ func init() { } func newHandler(scrapers []collector.Scraper, logger log.Logger) http.HandlerFunc { + processing := false return func(w http.ResponseWriter, r *http.Request) { + if processing { + log.Info("Received metrics request while previous still in progress: returning 429 Too Many Requests") + http.Error(w, "429 Too Many Requests", http.StatusTooManyRequests) + return + } + processing = true + defer func() { processing = false }() + var dsn string var err error target := ""