summary refs log tree commit diff
path: root/synapse/metrics
diff options
context:
space:
mode:
authorChristian Svensson <blue@cmd.nu>2020-06-23 19:06:01 +0200
committerGitHub <noreply@github.com>2020-06-23 18:06:01 +0100
commit8bbe87f42d7736b3f11db0fcfb4557b214e0356d (patch)
tree40e1cbcdf20d26fca2d141c41e14c212aa958127 /synapse/metrics
parentSync ignored table names in synapse_port_db to current database schema (#7717) (diff)
downloadsynapse-8bbe87f42d7736b3f11db0fcfb4557b214e0356d.tar.xz
Set Content-Length for Metrics requests (#7730)
HTTP requires the response to contain a Content-Length header unless chunked encoding is being used.
Prometheus metrics endpoint did not set this, causing software such as prometheus-proxy to not be able to scrape synapse for metrics.

Signed-off-by: Christian Svensson <blue@cmd.nu>
Diffstat (limited to 'synapse/metrics')
-rw-r--r--synapse/metrics/_exposition.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/synapse/metrics/_exposition.py b/synapse/metrics/_exposition.py
index ab7f948ed4..4304c60d56 100644
--- a/synapse/metrics/_exposition.py
+++ b/synapse/metrics/_exposition.py
@@ -208,6 +208,7 @@ class MetricsHandler(BaseHTTPRequestHandler):
             raise
         self.send_response(200)
         self.send_header("Content-Type", CONTENT_TYPE_LATEST)
+        self.send_header("Content-Length", str(len(output)))
         self.end_headers()
         self.wfile.write(output)
 
@@ -261,4 +262,6 @@ class MetricsResource(Resource):
 
     def render_GET(self, request):
         request.setHeader(b"Content-Type", CONTENT_TYPE_LATEST.encode("ascii"))
-        return generate_latest(self.registry)
+        response = generate_latest(self.registry)
+        request.setHeader(b"Content-Length", str(len(response)))
+        return response