summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2016-01-21 16:10:37 +0000
committerErik Johnston <erik@matrix.org>2016-01-21 16:10:37 +0000
commit0e07f2e15de196076d75784f44624861b971f8e7 (patch)
tree1adb7c723ec3799317f099b5d7c28ffd35192e3d /synapse
parentMerge pull request #516 from matrix-org/erikj/push_perf (diff)
downloadsynapse-0e07f2e15de196076d75784f44624861b971f8e7.tar.xz
Only fetch events for rooms and receipts
Diffstat (limited to 'synapse')
-rw-r--r--synapse/handlers/events.py6
-rw-r--r--synapse/notifier.py6
-rw-r--r--synapse/push/__init__.py3
3 files changed, 8 insertions, 7 deletions
diff --git a/synapse/handlers/events.py b/synapse/handlers/events.py
index aca4b6754e..254b483da6 100644
--- a/synapse/handlers/events.py
+++ b/synapse/handlers/events.py
@@ -113,10 +113,10 @@ class EventStreamHandler(BaseHandler):
     @log_function
     def get_stream(self, auth_user_id, pagin_config, timeout=0,
                    as_client_event=True, affect_presence=True,
-                   only_room_events=False, room_id=None, is_guest=False):
+                   only_keys=None, room_id=None, is_guest=False):
         """Fetches the events stream for a given user.
 
-        If `only_room_events` is `True` only room events will be returned.
+        If `only_keys` is not None, events from keys will be sent down.
         """
         auth_user = UserID.from_string(auth_user_id)
 
@@ -134,7 +134,7 @@ class EventStreamHandler(BaseHandler):
 
             events, tokens = yield self.notifier.get_events_for(
                 auth_user, pagin_config, timeout,
-                only_room_events=only_room_events,
+                only_keys=only_keys,
                 is_guest=is_guest, explicit_room_id=room_id
             )
 
diff --git a/synapse/notifier.py b/synapse/notifier.py
index 262a684f64..6eaa65071e 100644
--- a/synapse/notifier.py
+++ b/synapse/notifier.py
@@ -331,13 +331,13 @@ class Notifier(object):
 
     @defer.inlineCallbacks
     def get_events_for(self, user, pagination_config, timeout,
-                       only_room_events=False,
+                       only_keys=None,
                        is_guest=False, explicit_room_id=None):
         """ For the given user and rooms, return any new events for them. If
         there are no new events wait for up to `timeout` milliseconds for any
         new events to happen before returning.
 
-        If `only_room_events` is `True` only room events will be returned.
+        If `only_keys` is not None, events from keys will be sent down.
 
         If explicit_room_id is not set, the user's joined rooms will be polled
         for events.
@@ -367,7 +367,7 @@ class Notifier(object):
                 after_id = getattr(after_token, keyname)
                 if before_id == after_id:
                     continue
-                if only_room_events and name != "room":
+                if only_keys and name not in only_keys:
                     continue
                 new_events, new_key = yield source.get_new_events(
                     user=user,
diff --git a/synapse/push/__init__.py b/synapse/push/__init__.py
index bbfe9b8a50..e6a28bd8c0 100644
--- a/synapse/push/__init__.py
+++ b/synapse/push/__init__.py
@@ -126,7 +126,8 @@ class Pusher(object):
         config = PaginationConfig(from_token=from_tok, limit='1')
         timeout = (300 + random.randint(-60, 60)) * 1000
         chunk = yield self.evStreamHandler.get_stream(
-            self.user_id, config, timeout=timeout, affect_presence=False
+            self.user_id, config, timeout=timeout, affect_presence=False,
+            only_keys=("room", "receipt",),
         )
 
         # limiting to 1 may get 1 event plus 1 presence event, so