forked-synapse/synapse/replication/http
Sean Quah 6b18eb4430
Fix opentracing and Prometheus metrics for replication requests (#10996)
This commit fixes two bugs to do with decorators not instrumenting
`ReplicationEndpoint`'s `send_request` correctly. There are two
decorators on `send_request`: Prometheus' `Gauge.track_inprogress()`
and Synapse's `opentracing.trace`.

`Gauge.track_inprogress()` does not have any support for async
functions when used as a decorator. Since async functions behave like
regular functions that return coroutines, only the creation of the
coroutine was covered by the metric and none of the actual body of
`send_request`.

`Gauge.track_inprogress()` returns a regular, non-async function
wrapping `send_request`, which is the source of the next bug.
The `opentracing.trace` decorator would normally handle async functions
correctly, but since the wrapped `send_request` is a non-async function,
the decorator ends up suffering from the same issue as
`Gauge.track_inprogress()`: the opentracing span only measures the
creation of the coroutine and none of the actual function body.

Using `Gauge.track_inprogress()` as a context manager instead of a
decorator resolves both bugs.
2021-10-12 11:23:46 +01:00
..
__init__.py Remove redundant "coding: utf-8" lines (#9786) 2021-04-14 15:34:27 +01:00
_base.py Fix opentracing and Prometheus metrics for replication requests (#10996) 2021-10-12 11:23:46 +01:00
account_data.py Remove redundant "coding: utf-8" lines (#9786) 2021-04-14 15:34:27 +01:00
devices.py Remove redundant "coding: utf-8" lines (#9786) 2021-04-14 15:34:27 +01:00
federation.py Split FederationHandler in half (#10692) 2021-08-26 21:41:44 +01:00
login.py MSC2918 Refresh tokens implementation (#9450) 2021-06-24 14:33:20 +01:00
membership.py Extend ResponseCache to pass a context object into the callback (#10157) 2021-06-14 10:26:09 +01:00
presence.py Use a database table to hold the users that should have full presence sent to them, instead of something in-memory (#9823) 2021-05-18 14:13:45 +01:00
push.py Remove redundant "coding: utf-8" lines (#9786) 2021-04-14 15:34:27 +01:00
register.py Remove redundant "coding: utf-8" lines (#9786) 2021-04-14 15:34:27 +01:00
send_event.py Remove redundant "coding: utf-8" lines (#9786) 2021-04-14 15:34:27 +01:00
streams.py Remove redundant "coding: utf-8" lines (#9786) 2021-04-14 15:34:27 +01:00