summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2016-08-17 11:12:29 +0100
committerErik Johnston <erik@matrix.org>2016-08-17 11:12:29 +0100
commit62c5245c8753de306b728f2917f03e786982188f (patch)
tree29860822b281f54181bccbc363c9fee0ce39eb19 /synapse
parentDo it in storage function (diff)
downloadsynapse-62c5245c8753de306b728f2917f03e786982188f.tar.xz
Measure notify_interested_services
Diffstat (limited to 'synapse')
-rw-r--r--synapse/handlers/appservice.py41
1 files changed, 22 insertions, 19 deletions
diff --git a/synapse/handlers/appservice.py b/synapse/handlers/appservice.py
index 051ccdb380..48feae07b5 100644
--- a/synapse/handlers/appservice.py
+++ b/synapse/handlers/appservice.py
@@ -17,6 +17,7 @@ from twisted.internet import defer
 
 from synapse.api.constants import EventTypes
 from synapse.appservice import ApplicationService
+from synapse.util.metrics import Measure
 
 import logging
 
@@ -42,6 +43,7 @@ class ApplicationServicesHandler(object):
         self.appservice_api = hs.get_application_service_api()
         self.scheduler = hs.get_application_service_scheduler()
         self.started_scheduler = False
+        self.clock = hs.get_clock()
 
     @defer.inlineCallbacks
     def notify_interested_services(self, event):
@@ -53,25 +55,26 @@ class ApplicationServicesHandler(object):
         Args:
             event(Event): The event to push out to interested services.
         """
-        # Gather interested services
-        services = yield self._get_services_for_event(event)
-        if len(services) == 0:
-            return  # no services need notifying
-
-        # Do we know this user exists? If not, poke the user query API for
-        # all services which match that user regex. This needs to block as these
-        # user queries need to be made BEFORE pushing the event.
-        yield self._check_user_exists(event.sender)
-        if event.type == EventTypes.Member:
-            yield self._check_user_exists(event.state_key)
-
-        if not self.started_scheduler:
-            self.scheduler.start().addErrback(log_failure)
-            self.started_scheduler = True
-
-        # Fork off pushes to these services
-        for service in services:
-            self.scheduler.submit_event_for_as(service, event)
+        with Measure(self.clock, "notify_interested_services"):
+            # Gather interested services
+            services = yield self._get_services_for_event(event)
+            if len(services) == 0:
+                return  # no services need notifying
+
+            # Do we know this user exists? If not, poke the user query API for
+            # all services which match that user regex. This needs to block as these
+            # user queries need to be made BEFORE pushing the event.
+            yield self._check_user_exists(event.sender)
+            if event.type == EventTypes.Member:
+                yield self._check_user_exists(event.state_key)
+
+            if not self.started_scheduler:
+                self.scheduler.start().addErrback(log_failure)
+                self.started_scheduler = True
+
+            # Fork off pushes to these services
+            for service in services:
+                self.scheduler.submit_event_for_as(service, event)
 
     @defer.inlineCallbacks
     def query_user_exists(self, user_id):