diff options
author | Erik Johnston <erik@matrix.org> | 2016-02-10 11:25:32 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2016-02-10 11:25:32 +0000 |
commit | f7ef5c1d57617f4bd0d40251fdd3145a82a47742 (patch) | |
tree | 5e93b2013aa788f52ea61fd5271204c411f9abfa /synapse/storage/events.py | |
parent | Merge pull request #532 from floviolleau/floviolleau/documentation (diff) | |
parent | Rename functions (diff) | |
download | synapse-f7ef5c1d57617f4bd0d40251fdd3145a82a47742.tar.xz |
Merge pull request #568 from matrix-org/erikj/unread_notif
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..3a5c6ee4b1 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( + txn, event, context.push_actions + ) + + if event.type == EventTypes.Redaction and event.redacts is not None: + self._remove_push_actions_for_event_id_txn( + txn, event.room_id, event.redacts ) for room_id, depth in depth_updates.items(): |