mirror of
https://git.anonymousland.org/anonymousland/synapse-product.git
synced 2024-10-01 08:25:44 -04:00
Merge pull request #1017 from matrix-org/erikj/appservice_measure
Measure notify_interested_services
This commit is contained in:
commit
92d39126d7
@ -17,6 +17,7 @@ from twisted.internet import defer
|
|||||||
|
|
||||||
from synapse.api.constants import EventTypes
|
from synapse.api.constants import EventTypes
|
||||||
from synapse.appservice import ApplicationService
|
from synapse.appservice import ApplicationService
|
||||||
|
from synapse.util.metrics import Measure
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@ -42,6 +43,7 @@ class ApplicationServicesHandler(object):
|
|||||||
self.appservice_api = hs.get_application_service_api()
|
self.appservice_api = hs.get_application_service_api()
|
||||||
self.scheduler = hs.get_application_service_scheduler()
|
self.scheduler = hs.get_application_service_scheduler()
|
||||||
self.started_scheduler = False
|
self.started_scheduler = False
|
||||||
|
self.clock = hs.get_clock()
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def notify_interested_services(self, event):
|
def notify_interested_services(self, event):
|
||||||
@ -53,25 +55,26 @@ class ApplicationServicesHandler(object):
|
|||||||
Args:
|
Args:
|
||||||
event(Event): The event to push out to interested services.
|
event(Event): The event to push out to interested services.
|
||||||
"""
|
"""
|
||||||
# Gather interested services
|
with Measure(self.clock, "notify_interested_services"):
|
||||||
services = yield self._get_services_for_event(event)
|
# Gather interested services
|
||||||
if len(services) == 0:
|
services = yield self._get_services_for_event(event)
|
||||||
return # no services need notifying
|
if len(services) == 0:
|
||||||
|
return # no services need notifying
|
||||||
|
|
||||||
# Do we know this user exists? If not, poke the user query API for
|
# 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
|
# all services which match that user regex. This needs to block as these
|
||||||
# user queries need to be made BEFORE pushing the event.
|
# user queries need to be made BEFORE pushing the event.
|
||||||
yield self._check_user_exists(event.sender)
|
yield self._check_user_exists(event.sender)
|
||||||
if event.type == EventTypes.Member:
|
if event.type == EventTypes.Member:
|
||||||
yield self._check_user_exists(event.state_key)
|
yield self._check_user_exists(event.state_key)
|
||||||
|
|
||||||
if not self.started_scheduler:
|
if not self.started_scheduler:
|
||||||
self.scheduler.start().addErrback(log_failure)
|
self.scheduler.start().addErrback(log_failure)
|
||||||
self.started_scheduler = True
|
self.started_scheduler = True
|
||||||
|
|
||||||
# Fork off pushes to these services
|
# Fork off pushes to these services
|
||||||
for service in services:
|
for service in services:
|
||||||
self.scheduler.submit_event_for_as(service, event)
|
self.scheduler.submit_event_for_as(service, event)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def query_user_exists(self, user_id):
|
def query_user_exists(self, user_id):
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
from twisted.internet import defer
|
from twisted.internet import defer
|
||||||
from .. import unittest
|
from .. import unittest
|
||||||
|
from tests.utils import MockClock
|
||||||
|
|
||||||
from synapse.handlers.appservice import ApplicationServicesHandler
|
from synapse.handlers.appservice import ApplicationServicesHandler
|
||||||
|
|
||||||
@ -32,6 +33,7 @@ class AppServiceHandlerTestCase(unittest.TestCase):
|
|||||||
hs.get_datastore = Mock(return_value=self.mock_store)
|
hs.get_datastore = Mock(return_value=self.mock_store)
|
||||||
hs.get_application_service_api = Mock(return_value=self.mock_as_api)
|
hs.get_application_service_api = Mock(return_value=self.mock_as_api)
|
||||||
hs.get_application_service_scheduler = Mock(return_value=self.mock_scheduler)
|
hs.get_application_service_scheduler = Mock(return_value=self.mock_scheduler)
|
||||||
|
hs.get_clock.return_value = MockClock()
|
||||||
self.handler = ApplicationServicesHandler(hs)
|
self.handler = ApplicationServicesHandler(hs)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
|
Loading…
Reference in New Issue
Block a user