Add some comments to areas that could be optimised.
2 files changed, 11 insertions, 1 deletions
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
|