Merge branch 'erikj/cache_receipts_in_room' of github.com:matrix-org/synapse into erikj/timings

erikj/timings
Erik Johnston 2016-06-01 11:08:45 +01:00
commit 143ff10212
2 changed files with 11 additions and 6 deletions

View File

@ -21,7 +21,7 @@ from twisted.internet import defer
from .baserules import list_with_base_rules
from .push_rule_evaluator import PushRuleEvaluatorForEvent
from synapse.api.constants import EventTypes
from synapse.api.constants import EventTypes, Membership
from synapse.visibility import filter_events_for_clients
from synapse.util.logutils import log_duration
@ -76,7 +76,7 @@ def _get_rules(room_id, user_ids, store):
@defer.inlineCallbacks
def evaluator_for_event(event, hs, store):
def evaluator_for_event(event, hs, store, current_state):
room_id = event.room_id
# users in the room who have pushers need to get push rules run because
@ -90,8 +90,10 @@ def evaluator_for_event(event, hs, store):
# sent a read receipt into the room.
with log_duration("get_users_in_room"):
all_in_room = yield store.get_users_in_room(room_id)
all_in_room = set(all_in_room)
all_in_room = set(
e.state_key for e in current_state.values()
if e.type == EventTypes.Member and e.membership == Membership.JOIN
)
with log_duration("get_receipts_for_room"):
users_with_receipts = yield store.get_users_with_read_receipts_in_room(room_id)
@ -153,7 +155,10 @@ class BulkPushRuleEvaluator:
self.store, user_tuples, [event], {event.event_id: current_state}
)
room_members = yield self.store.get_users_in_room(self.room_id)
room_members = set(
e.state_key for e in current_state.values()
if e.type == EventTypes.Member and e.membership == Membership.JOIN
)
evaluator = PushRuleEvaluatorForEvent(event, len(room_members))

View File

@ -44,7 +44,7 @@ class ReceiptsStore(SQLBaseStore):
if receipt_type != "m.read":
return
# XXX: ObservableDeferred?!
# Returns an ObservableDeferred
res = self.get_users_with_read_receipts_in_room.cache.get((room_id,), None)
if res and res.called and user_id in res.result: