summary refs log tree commit diff
path: root/synapse/util/metrics.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2021-04-27 14:15:35 +0100
committerErik Johnston <erik@matrix.org>2021-04-27 14:15:35 +0100
commitef9e926e552260042ac855fbeae9b4ef396254e2 (patch)
tree6397717471ef5e5d965d1b82c8c12ec5034aee3e /synapse/util/metrics.py
parentRemove various bits of compatibility code for Python <3.6 (#9879) (diff)
downloadsynapse-erikj/opentracing_db_measure.tar.xz
Add opentracing spans to DB calls and measure blocks github/erikj/opentracing_db_measure erikj/opentracing_db_measure
Diffstat (limited to 'synapse/util/metrics.py')
-rw-r--r--synapse/util/metrics.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/synapse/util/metrics.py b/synapse/util/metrics.py

index 6d14351bd2..c6ff520b34 100644 --- a/synapse/util/metrics.py +++ b/synapse/util/metrics.py
@@ -23,6 +23,7 @@ from synapse.logging.context import ( LoggingContext, current_context, ) +from synapse.logging.opentracing import start_active_span from synapse.metrics import InFlightGauge logger = logging.getLogger(__name__) @@ -102,6 +103,7 @@ class Measure: "name", "_logging_context", "start", + "_span", ] def __init__(self, clock, name: str): @@ -126,13 +128,18 @@ class Measure: self._logging_context = LoggingContext(str(curr_context), parent_context) self.start = None # type: Optional[int] + self._span = start_active_span(f"measure.{name}") + def __enter__(self) -> "Measure": if self.start is not None: raise RuntimeError("Measure() objects cannot be re-used") + self._span.__enter__() + self.start = self.clock.time() self._logging_context.__enter__() in_flight.register((self.name,), self._update_in_flight) + return self def __exit__(self, exc_type, exc_val, exc_tb): @@ -156,6 +163,8 @@ class Measure: except ValueError: logger.warning("Failed to save metrics! Usage: %s", usage) + self._span.__exit__(exc_type, exc_val, exc_tb) + def get_resource_usage(self) -> ContextResourceUsage: """Get the resources used within this Measure block