From c087f680531b2c40a4dc731da64b351a133c27fe Mon Sep 17 00:00:00 2001
From: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
Date: Tue, 17 Nov 2020 16:01:33 +0000
Subject: [PATCH] Cap the version of prometheus_client to <v0.9.0 in the
 dockerfile (#8767)

Short-term fix for https://github.com/matrix-org/synapse/issues/8766.
---
 changelog.d/8767.bugfix        | 1 +
 docker/Dockerfile              | 3 ++-
 synapse/python_dependencies.py | 4 ++++
 3 files changed, 7 insertions(+), 1 deletion(-)
 create mode 100644 changelog.d/8767.bugfix

diff --git a/changelog.d/8767.bugfix b/changelog.d/8767.bugfix
new file mode 100644
index 0000000000..9fe5107a5e
--- /dev/null
+++ b/changelog.d/8767.bugfix
@@ -0,0 +1 @@
+Fix a dependency versioning bug in the Dockerfile that prevented Synapse from starting.
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 9791d3ddf0..791cd6936b 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -36,7 +36,8 @@ RUN pip install --prefix="/install" --no-warn-script-location \
         frozendict \
         jaeger-client \
         opentracing \
-        prometheus-client \
+        # Match the version constraints of Synapse
+        "prometheus_client>=0.4.0,<0.9.0" \
         psycopg2 \
         pycparser \
         pyrsistent \
diff --git a/synapse/python_dependencies.py b/synapse/python_dependencies.py
index 0ddead8a0f..aab77fc453 100644
--- a/synapse/python_dependencies.py
+++ b/synapse/python_dependencies.py
@@ -72,6 +72,10 @@ REQUIREMENTS = [
     # prom-client has a history of breaking backwards compatibility between
     # minor versions (https://github.com/prometheus/client_python/issues/317),
     # so we also pin the minor version.
+    #
+    # Note that we replicate these constraints in the Synapse Dockerfile while
+    # pre-installing dependencies. If these constraints are updated here, the
+    # same change should be made in the Dockerfile.
     "prometheus_client>=0.4.0,<0.9.0",
     # we use attr.validators.deep_iterable, which arrived in 19.1.0 (Note:
     # Fedora 31 only has 19.1, so if we want to upgrade we should wait until 33
-- 
GitLab