diff options
author | Erik Johnston <erik@matrix.org> | 2016-02-09 16:19:15 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2016-02-09 16:19:15 +0000 |
commit | 7b0d846407a593ccd204f82aaa1090b8af8df84c (patch) | |
tree | 4848dd2571d064d0caa0f5e45b952306c84f78c7 /synapse/storage/events.py | |
parent | Pass in current state to push action handler (diff) | |
download | synapse-7b0d846407a593ccd204f82aaa1090b8af8df84c.tar.xz |
Atomically persit push actions when we persist the event
Diffstat (limited to 'synapse/storage/events.py')
-rw-r--r-- | synapse/storage/events.py | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/synapse/storage/events.py b/synapse/storage/events.py index c6ed54721c..7d4012c414 100644 --- a/synapse/storage/events.py +++ b/synapse/storage/events.py @@ -205,23 +205,29 @@ class EventsStore(SQLBaseStore): @log_function def _persist_events_txn(self, txn, events_and_contexts, backfilled, is_new_state=True): - - # Remove the any existing cache entries for the event_ids - for event, _ in events_and_contexts: + depth_updates = {} + for event, context in events_and_contexts: + # Remove the any existing cache entries for the event_ids txn.call_after(self._invalidate_get_event_cache, event.event_id) - if not backfilled: txn.call_after( self._events_stream_cache.entity_has_changed, event.room_id, event.internal_metadata.stream_ordering, ) - depth_updates = {} - for event, _ in events_and_contexts: - if event.internal_metadata.is_outlier(): - continue - depth_updates[event.room_id] = max( - event.depth, depth_updates.get(event.room_id, event.depth) + if not event.internal_metadata.is_outlier(): + depth_updates[event.room_id] = max( + event.depth, depth_updates.get(event.room_id, event.depth) + ) + + if context.push_actions: + self._set_push_actions_for_event_and_users( + txn, event, context.push_actions + ) + + if event.type == EventTypes.Redaction and event.redacts is not None: + self._remove_push_actions_for_event_id( + txn, event.room_id, event.redacts ) for room_id, depth in depth_updates.items(): |