summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--synapse/handlers/sync.py3
-rw-r--r--synapse/push/__init__.py4
-rw-r--r--synapse/push/bulk_push_rule_evaluator.py8
3 files changed, 14 insertions, 1 deletions
diff --git a/synapse/handlers/sync.py b/synapse/handlers/sync.py
index 4cbb43a31b..fa5e954e01 100644
--- a/synapse/handlers/sync.py
+++ b/synapse/handlers/sync.py
@@ -447,6 +447,9 @@ class SyncHandler(BaseHandler):
         )
         now_token = now_token.copy_and_replace("presence_key", presence_key)
 
+        # We now fetch all ephemeral events for this room in order to get
+        # this users current read receipt. This could almost certainly be
+        # optimised.
         _, all_ephemeral_by_room = yield self.ephemeral_by_room(
             sync_config, now_token
         )
diff --git a/synapse/push/__init__.py b/synapse/push/__init__.py
index d5928c1d29..635dedd523 100644
--- a/synapse/push/__init__.py
+++ b/synapse/push/__init__.py
@@ -26,7 +26,9 @@ import random
 
 logger = logging.getLogger(__name__)
 
-
+# Pushers could now be moved to pull out of the event_actions table instead
+# of listening on the event stream: this would avoid them having to run the
+# rules again.
 class Pusher(object):
     INITIAL_BACKOFF = 1000
     MAX_BACKOFF = 60 * 60 * 1000
diff --git a/synapse/push/bulk_push_rule_evaluator.py b/synapse/push/bulk_push_rule_evaluator.py
index f531d2edc4..1c0fa72b25 100644
--- a/synapse/push/bulk_push_rule_evaluator.py
+++ b/synapse/push/bulk_push_rule_evaluator.py
@@ -59,6 +59,14 @@ def evaluator_for_room_id(room_id, hs, store):
 
 
 class BulkPushRuleEvaluator:
+    """
+    Runs push rules for all users in a room.
+    This is faster than running PushRuleEvaluator for each user because it
+    fetches all the rules for all the users in one (batched) db query
+    rarher than doing multiple queries per-user. It currently uses
+    the same logic to run the actual rules, but could be optimised further
+    (see https://matrix.org/jira/browse/SYN-562)
+    """
     def __init__(self, room_id, rules_by_user, display_names, users_in_room):
         self.room_id = room_id
         self.rules_by_user = rules_by_user