From a526716e03f9052183e8043f741c697684dd6e53 Mon Sep 17 00:00:00 2001 From: Patrick Cloke Date: Fri, 10 Sep 2021 15:26:00 -0400 Subject: [PATCH 1/3] Add a max version to jaeger-client. --- changelog.d/10799.misc | 1 + synapse/python_dependencies.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 changelog.d/10799.misc diff --git a/changelog.d/10799.misc b/changelog.d/10799.misc new file mode 100644 index 000000000000..91f7ede096a3 --- /dev/null +++ b/changelog.d/10799.misc @@ -0,0 +1 @@ +Add a max version for the `jaeger-client` dependency for an incompatibility with the rust reporter. diff --git a/synapse/python_dependencies.py b/synapse/python_dependencies.py index 154e5b7028e9..7d44b9995186 100644 --- a/synapse/python_dependencies.py +++ b/synapse/python_dependencies.py @@ -107,7 +107,7 @@ "systemd": ["systemd-python>=231"], "url_preview": ["lxml>=3.5.0"], "sentry": ["sentry-sdk>=0.7.2"], - "opentracing": ["jaeger-client>=4.0.0", "opentracing>=2.2.0"], + "opentracing": ["jaeger-client>=4.0.0,<4.7.0", "opentracing>=2.2.0"], "jwt": ["pyjwt>=1.6.4"], # hiredis is not a *strict* dependency, but it makes things much faster. # (if it is not installed, we fall back to slow code.) From 7b377f09c05a82f0b4de952266c1bb680593c0a0 Mon Sep 17 00:00:00 2001 From: Patrick Cloke Date: Mon, 13 Sep 2021 07:59:35 -0400 Subject: [PATCH 2/3] Remove max-version pin. --- synapse/logging/opentracing.py | 11 ++++++++++- synapse/python_dependencies.py | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/synapse/logging/opentracing.py b/synapse/logging/opentracing.py index ecd51f1b4a26..e845cd7a0357 100644 --- a/synapse/logging/opentracing.py +++ b/synapse/logging/opentracing.py @@ -236,8 +236,16 @@ class _DummyTagNames: try: from rust_python_jaeger_reporter import Reporter + # jaeger-client 4.7.0 requires that reporters inherit from BaseReporter, which + # didn't exist before that version. + try: + from jaeger_client.reporter import BaseReporter + except ImportError: + class BaseReporter: # type: ignore[no-redef] + pass + @attr.s(slots=True, frozen=True) - class _WrappedRustReporter: + class _WrappedRustReporter(BaseReporter): """Wrap the reporter to ensure `report_span` never throws.""" _reporter = attr.ib(type=Reporter, default=attr.Factory(Reporter)) @@ -382,6 +390,7 @@ def init_tracer(hs: "HomeServer"): # If we have the rust jaeger reporter available let's use that. if RustReporter: logger.info("Using rust_python_jaeger_reporter library") + assert config.sampler is not None tracer = config.create_tracer(RustReporter(), config.sampler) opentracing.set_global_tracer(tracer) else: diff --git a/synapse/python_dependencies.py b/synapse/python_dependencies.py index 7d44b9995186..154e5b7028e9 100644 --- a/synapse/python_dependencies.py +++ b/synapse/python_dependencies.py @@ -107,7 +107,7 @@ "systemd": ["systemd-python>=231"], "url_preview": ["lxml>=3.5.0"], "sentry": ["sentry-sdk>=0.7.2"], - "opentracing": ["jaeger-client>=4.0.0,<4.7.0", "opentracing>=2.2.0"], + "opentracing": ["jaeger-client>=4.0.0", "opentracing>=2.2.0"], "jwt": ["pyjwt>=1.6.4"], # hiredis is not a *strict* dependency, but it makes things much faster. # (if it is not installed, we fall back to slow code.) From 9dae77381bfac15ec6bbf7119a1ead9dcf3b4c8b Mon Sep 17 00:00:00 2001 From: Patrick Cloke Date: Mon, 13 Sep 2021 08:07:27 -0400 Subject: [PATCH 3/3] Lint --- synapse/logging/opentracing.py | 1 + 1 file changed, 1 insertion(+) diff --git a/synapse/logging/opentracing.py b/synapse/logging/opentracing.py index e845cd7a0357..d20f6e91065a 100644 --- a/synapse/logging/opentracing.py +++ b/synapse/logging/opentracing.py @@ -241,6 +241,7 @@ class _DummyTagNames: try: from jaeger_client.reporter import BaseReporter except ImportError: + class BaseReporter: # type: ignore[no-redef] pass