From 98c8038bcf4cad9fd167809857ccb218b068b0ce Mon Sep 17 00:00:00 2001 From: Jorik Schellekens Date: Tue, 25 Jun 2019 10:21:16 +0100 Subject: [PATCH] Black is the new black --- synapse/config/tracer.py | 38 ++++++++++---------------- synapse/http/matrixfederationclient.py | 5 ++-- synapse/http/site.py | 5 ++-- synapse/util/scopecontextmanager.py | 12 +++++--- synapse/util/tracerutils.py | 13 +++++---- 5 files changed, 36 insertions(+), 37 deletions(-) diff --git a/synapse/config/tracer.py b/synapse/config/tracer.py index b4262af6f9..dbcc691d69 100644 --- a/synapse/config/tracer.py +++ b/synapse/config/tracer.py @@ -13,26 +13,28 @@ # See the License for the specific language governing permissions and # limitations under the License. -from ._base import Config +import logging + from jaeger_client import Config as JaegerConfig + from synapse.util.scopecontextmanager import LogContextScopeManager -import logging +from ._base import Config + logger = logging.getLogger(__name__) + class TracerConfig(Config): def read_config(self, config): self.tracer_config = config.get("tracer") if self.tracer_config is None: # If the tracer is not configured we assume it is disabled - self.tracer_config = { - "tracer_enabled": False, - } - + self.tracer_config = {"tracer_enabled": False} + if self.tracer_config.get("tracer_enabled", False): # The tracer is enabled so sanitize the config - # If no whitelists are given + # If no whitelists are given self.tracer_config.setdefault("user_whitelist", ["*"]) self.tracer_config.setdefault("homeserver_whitelist", ["*"]) @@ -58,6 +60,7 @@ class TracerConfig(Config): - "*" """ + def init_tracing(config): """Initialise the JaegerClient tracer @@ -69,25 +72,14 @@ def init_tracing(config): if config.tracer_config.get("tracer_enabled", False): jaeger_config = JaegerConfig( - config={ - 'sampler': { - 'type': 'const', - 'param': 1, - }, - 'logging': True, - }, + config={"sampler": {"type": "const", "param": 1}, "logging": True}, service_name=config.server_name, scope_manager=LogContextScopeManager(config), ) - else: # The tracer is not configured so we instantiate a noop tracer + else: # The tracer is not configured so we instantiate a noop tracer jaeger_config = JaegerConfig( - config={ - 'sampler': { - 'type': 'const', - 'param': 0, - } - }, - service_name=config.server_name + config={"sampler": {"type": "const", "param": 0}}, + service_name=config.server_name, ) - return jaeger_config.initialize_tracer() \ No newline at end of file + return jaeger_config.initialize_tracer() diff --git a/synapse/http/matrixfederationclient.py b/synapse/http/matrixfederationclient.py index 51afb35891..afaa8178e4 100644 --- a/synapse/http/matrixfederationclient.py +++ b/synapse/http/matrixfederationclient.py @@ -23,8 +23,10 @@ from six import PY3, raise_from, string_types from six.moves import urllib import attr +import opentracing import treq from canonicaljson import encode_canonical_json +from opentracing.propagation import Format from prometheus_client import Counter from signedjson.sign import sign_json from zope.interface import implementer @@ -52,9 +54,6 @@ from synapse.util.async_helpers import timeout_deferred from synapse.util.logcontext import make_deferred_yieldable from synapse.util.metrics import Measure -import opentracing -from opentracing.propagation import Format - logger = logging.getLogger(__name__) outgoing_requests_counter = Counter( diff --git a/synapse/http/site.py b/synapse/http/site.py index 775cc02f42..7ed8ca819c 100644 --- a/synapse/http/site.py +++ b/synapse/http/site.py @@ -14,6 +14,7 @@ import contextlib import logging import time + import opentracing from twisted.web.server import Request, Site @@ -21,7 +22,7 @@ from twisted.web.server import Request, Site from synapse.http import redact_uri from synapse.http.request_metrics import RequestMetrics, requests_counter from synapse.util.logcontext import LoggingContext, PreserveLoggingContext -from synapse.util.tracerutils import extract_span_context +from synapse.util.tracerutils import extract_span_context logger = logging.getLogger(__name__) @@ -247,7 +248,7 @@ class SynapseRequest(Request): "http.url": self.get_redacted_uri(), "peer.ipv6": self.getClientIP(), }, - child_of=span_context + child_of=span_context, ) def _finished_processing(self): diff --git a/synapse/util/scopecontextmanager.py b/synapse/util/scopecontextmanager.py index a4fbd28e19..177eda2046 100644 --- a/synapse/util/scopecontextmanager.py +++ b/synapse/util/scopecontextmanager.py @@ -1,9 +1,12 @@ -from .logcontext import LoggingContext, nested_logging_context -from opentracing import ScopeManager, Scope import logging +from opentracing import Scope, ScopeManager + +from .logcontext import LoggingContext, nested_logging_context + logger = logging.getLogger(__name__) + class LogContextScopeManager(ScopeManager): _homeserver_whitelist = ["*"] @@ -71,6 +74,7 @@ class LogContextScopeManager(ScopeManager): def user_whitelisted(self, request): pass + class _LogContextScope(Scope): def __init__(self, manager, span, logcontext, enter_logcontext, finish_on_close): super(_LogContextScope, self).__init__(manager, span) @@ -86,7 +90,7 @@ class _LogContextScope(Scope): super(_LogContextScope, self).__exit__(type, value, traceback) if self._enter_logcontext: self.logcontext.__exit__(type, value, traceback) - else: # the logcontext existed before the creation of the scope + else: # the logcontext existed before the creation of the scope self.logcontext.scope = None def close(self): @@ -95,4 +99,4 @@ class _LogContextScope(Scope): return if self._finish_on_close: - self.span.finish() \ No newline at end of file + self.span.finish() diff --git a/synapse/util/tracerutils.py b/synapse/util/tracerutils.py index 14b54e46c3..93f305e13e 100644 --- a/synapse/util/tracerutils.py +++ b/synapse/util/tracerutils.py @@ -1,8 +1,9 @@ -from opentracing.propagation import Format import opentracing +from opentracing.propagation import Format from .logcontext import LoggingContext + def extract_span_context(headers): """ Extracts a span context from Twisted Headers. @@ -13,10 +14,10 @@ def extract_span_context(headers): """ # Twisted encodes the values as lists whereas opentracing doesn't. # So, we take the first item in the list. - # Also, twisted uses byte arrays while opentracing expects strings. + # Also, twisted uses byte arrays while opentracing expects strings. header_dict = {k.decode(): v[0].decode() for k, v in headers.getAllRawHeaders()} return opentracing.tracer.extract(Format.HTTP_HEADERS, header_dict) - + def inject_span_context(headers, span): """ @@ -34,14 +35,16 @@ def inject_span_context(headers, span): """ carrier = {} carrier = opentracing.tracer.inject(span, Format.HTTP_HEADERS, {}) - + for key, value in carrier: headers.addRawHeaders(key, value) + # TODO: Implement whitelisting def request_from_whitelisted_homeserver(request): pass + # TODO: Implement whitelisting def user_whitelisted(request): - pass \ No newline at end of file + pass