From d55437772d230a3e2e969ec2d218bafbe908d24a Mon Sep 17 00:00:00 2001 From: Brendan Abolivier Date: Wed, 22 Sep 2021 17:00:54 +0200 Subject: [PATCH] Use the BaseReporter super-class for _WrappedRustReporter (#105) * Use the BaseReporter super-class for _WrappedRustReporter. (#10799) This fixes mypy errors with jaeger-client >= 4.7.0 and should be a no-op for versions before that. Co-authored-by: Patrick Cloke --- changelog.d/105.misc | 1 + synapse/logging/opentracing.py | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 changelog.d/105.misc diff --git a/changelog.d/105.misc b/changelog.d/105.misc new file mode 100644 index 000000000000..197cc6f05c0e --- /dev/null +++ b/changelog.d/105.misc @@ -0,0 +1 @@ +Ensure the Rust reporter passes type checking with jaeger-client 4.7's type annotations. diff --git a/synapse/logging/opentracing.py b/synapse/logging/opentracing.py index ecd51f1b4a26..d20f6e91065a 100644 --- a/synapse/logging/opentracing.py +++ b/synapse/logging/opentracing.py @@ -236,8 +236,17 @@ 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 +391,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: