Drop support for ancient prometheus_client (#8426)

Drop compatibility hacks for prometheus-client pre 0.4.0. Debian stretch and
Fedora 31 both have newer versions, so hopefully this will be ok.
This commit is contained in:
Richard van der Hoff 2020-09-30 16:42:05 +01:00 committed by GitHub
parent c429dfc300
commit ceafb5a1c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 23 deletions

1
changelog.d/8426.removal Normal file
View File

@ -0,0 +1 @@
Drop support for `prometheus_client` older than 0.4.0.

View File

@ -24,7 +24,6 @@ expect, and the newer "best practice" version of the up-to-date official client.
import math import math
import threading import threading
from collections import namedtuple
from http.server import BaseHTTPRequestHandler, HTTPServer from http.server import BaseHTTPRequestHandler, HTTPServer
from socketserver import ThreadingMixIn from socketserver import ThreadingMixIn
from urllib.parse import parse_qs, urlparse from urllib.parse import parse_qs, urlparse
@ -35,14 +34,6 @@ from twisted.web.resource import Resource
from synapse.util import caches from synapse.util import caches
try:
from prometheus_client.samples import Sample
except ImportError:
Sample = namedtuple( # type: ignore[no-redef] # noqa
"Sample", ["name", "labels", "value", "timestamp", "exemplar"]
)
CONTENT_TYPE_LATEST = str("text/plain; version=0.0.4; charset=utf-8") CONTENT_TYPE_LATEST = str("text/plain; version=0.0.4; charset=utf-8")
@ -93,17 +84,6 @@ def sample_line(line, name):
) )
def nameify_sample(sample):
"""
If we get a prometheus_client<0.4.0 sample as a tuple, transform it into a
namedtuple which has the names we expect.
"""
if not isinstance(sample, Sample):
sample = Sample(*sample, None, None)
return sample
def generate_latest(registry, emit_help=False): def generate_latest(registry, emit_help=False):
# Trigger the cache metrics to be rescraped, which updates the common # Trigger the cache metrics to be rescraped, which updates the common
@ -144,7 +124,7 @@ def generate_latest(registry, emit_help=False):
) )
) )
output.append("# TYPE {0} {1}\n".format(mname, mtype)) output.append("# TYPE {0} {1}\n".format(mname, mtype))
for sample in map(nameify_sample, metric.samples): for sample in metric.samples:
# Get rid of the OpenMetrics specific samples # Get rid of the OpenMetrics specific samples
for suffix in ["_created", "_gsum", "_gcount"]: for suffix in ["_created", "_gsum", "_gcount"]:
if sample.name.endswith(suffix): if sample.name.endswith(suffix):
@ -172,7 +152,7 @@ def generate_latest(registry, emit_help=False):
) )
) )
output.append("# TYPE {0} {1}\n".format(mnewname, mtype)) output.append("# TYPE {0} {1}\n".format(mnewname, mtype))
for sample in map(nameify_sample, metric.samples): for sample in metric.samples:
# Get rid of the OpenMetrics specific samples # Get rid of the OpenMetrics specific samples
for suffix in ["_created", "_gsum", "_gcount"]: for suffix in ["_created", "_gsum", "_gcount"]:
if sample.name.endswith(suffix): if sample.name.endswith(suffix):

View File

@ -68,7 +68,11 @@ REQUIREMENTS = [
"pymacaroons>=0.13.0", "pymacaroons>=0.13.0",
"msgpack>=0.5.2", "msgpack>=0.5.2",
"phonenumbers>=8.2.0", "phonenumbers>=8.2.0",
"prometheus_client>=0.0.18,<0.9.0", # we use GaugeHistogramMetric, which was added in prom-client 0.4.0.
# 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.
"prometheus_client>=0.4.0,<0.9.0",
# we use attr.validators.deep_iterable, which arrived in 19.1.0 (Note: # 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 # Fedora 31 only has 19.1, so if we want to upgrade we should wait until 33
# is out in November.) # is out in November.)