diff options
author | Erik Johnston <erikj@jki.re> | 2018-02-26 14:28:35 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-26 14:28:35 +0000 |
commit | 73fe86684736b5509ad2bb27b74e4e99c0db7570 (patch) | |
tree | 63c99e09fabe0a21f9465b1c3bf14cbef493d708 /synapse/storage/events.py | |
parent | Merge pull request #2900 from matrix-org/erikj/split_event_push_actions (diff) | |
parent | Merge branch 'develop' of github.com:matrix-org/synapse into erikj/handle_unp... (diff) | |
download | synapse-73fe86684736b5509ad2bb27b74e4e99c0db7570.tar.xz |
Merge pull request #2894 from matrix-org/erikj/handle_unpersisted_events_push
Ensure all push actions are deleted from staging
Diffstat (limited to 'synapse/storage/events.py')
-rw-r--r-- | synapse/storage/events.py | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/synapse/storage/events.py b/synapse/storage/events.py index 99d6cca585..b63392a6cd 100644 --- a/synapse/storage/events.py +++ b/synapse/storage/events.py @@ -627,6 +627,8 @@ class EventsStore(EventsWorkerStore): list of the event ids which are the forward extremities. """ + all_events_and_contexts = events_and_contexts + max_stream_order = events_and_contexts[-1][0].internal_metadata.stream_ordering self._update_current_state_txn(txn, state_delta_for_room, max_stream_order) @@ -689,6 +691,7 @@ class EventsStore(EventsWorkerStore): self._update_metadata_tables_txn( txn, events_and_contexts=events_and_contexts, + all_events_and_contexts=all_events_and_contexts, backfilled=backfilled, ) @@ -1086,26 +1089,33 @@ class EventsStore(EventsWorkerStore): ec for ec in events_and_contexts if ec[0] not in to_remove ] - def _update_metadata_tables_txn(self, txn, events_and_contexts, backfilled): + def _update_metadata_tables_txn(self, txn, events_and_contexts, + all_events_and_contexts, backfilled): """Update all the miscellaneous tables for new events Args: txn (twisted.enterprise.adbapi.Connection): db connection events_and_contexts (list[(EventBase, EventContext)]): events we are persisting + all_events_and_contexts (list[(EventBase, EventContext)]): all + events that we were going to persist. This includes events + we've already persisted, etc, that wouldn't appear in + events_and_context. backfilled (bool): True if the events were backfilled """ + # Insert all the push actions into the event_push_actions table. + self._set_push_actions_for_event_and_users_txn( + txn, + events_and_contexts=events_and_contexts, + all_events_and_contexts=all_events_and_contexts, + ) + if not events_and_contexts: # nothing to do here return for event, context in events_and_contexts: - # Insert all the push actions into the event_push_actions table. - self._set_push_actions_for_event_and_users_txn( - txn, event, - ) - if event.type == EventTypes.Redaction and event.redacts is not None: # Remove the entries in the event_push_actions table for the # redacted event. |