summary refs log tree commit diff
path: root/synapse/util/metrics.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2016-08-10 10:56:38 +0100
committerErik Johnston <erik@matrix.org>2016-08-10 10:56:38 +0100
commit3bc9629be5510a1f90af97568eb871f0ae22e5f8 (patch)
tree507e1264b7cef7f601fb037f49696a5c2f79b5ab /synapse/util/metrics.py
parentMerge pull request #996 from matrix-org/erikj/tls_error (diff)
downloadsynapse-3bc9629be5510a1f90af97568eb871f0ae22e5f8.tar.xz
Measure federation send transaction resources
Diffstat (limited to 'synapse/util/metrics.py')
-rw-r--r--synapse/util/metrics.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/synapse/util/metrics.py b/synapse/util/metrics.py
index 0b944d3e63..4d7fee8868 100644
--- a/synapse/util/metrics.py
+++ b/synapse/util/metrics.py
@@ -13,10 +13,12 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+from twisted.internet import defer
 
 from synapse.util.logcontext import LoggingContext
 import synapse.metrics
 
+from functools import wraps
 import logging
 
 
@@ -47,6 +49,18 @@ block_db_txn_duration = metrics.register_distribution(
 )
 
 
+def measure_func(name):
+    def wrapper(func):
+        @wraps(func)
+        @defer.inlineCallbacks
+        def measured_func(self, *args, **kwargs):
+            with Measure(self.clock, name):
+                r = yield func(self, *args, **kwargs)
+            defer.returnValue(r)
+        return measured_func
+    return wrapper
+
+
 class Measure(object):
     __slots__ = [
         "clock", "name", "start_context", "start", "new_context", "ru_utime",