Ensure all push actions are deleted from staging

This commit is contained in:
Erik Johnston 2018-02-20 12:33:04 +00:00
parent ad0ccf15ea
commit 24087bffa9
2 changed files with 19 additions and 2 deletions

View file

@ -88,13 +88,21 @@ class EventPushActionsStore(SQLBaseStore):
self._rotate_notifs, 30 * 60 * 1000 self._rotate_notifs, 30 * 60 * 1000
) )
def _set_push_actions_for_event_and_users_txn(self, txn, events_and_contexts): def _set_push_actions_for_event_and_users_txn(self, txn, events_and_contexts,
all_events_and_contexts):
"""Handles moving push actions from staging table to main """Handles moving push actions from staging table to main
event_push_actions table for all events in `events_and_contexts`. event_push_actions table for all events in `events_and_contexts`.
Also ensures that all events in `all_events_and_contexts` are removed
from the push action staging area.
Args: Args:
events_and_contexts (list[(EventBase, EventContext)]): events events_and_contexts (list[(EventBase, EventContext)]): events
we are persisting 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.
""" """
sql = """ sql = """

View file

@ -693,6 +693,8 @@ class EventsStore(SQLBaseStore):
list of the event ids which are the forward extremities. 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 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) self._update_current_state_txn(txn, state_delta_for_room, max_stream_order)
@ -755,6 +757,7 @@ class EventsStore(SQLBaseStore):
self._update_metadata_tables_txn( self._update_metadata_tables_txn(
txn, txn,
events_and_contexts=events_and_contexts, events_and_contexts=events_and_contexts,
all_events_and_contexts=all_events_and_contexts,
backfilled=backfilled, backfilled=backfilled,
) )
@ -1152,13 +1155,18 @@ class EventsStore(SQLBaseStore):
ec for ec in events_and_contexts if ec[0] not in to_remove 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 """Update all the miscellaneous tables for new events
Args: Args:
txn (twisted.enterprise.adbapi.Connection): db connection txn (twisted.enterprise.adbapi.Connection): db connection
events_and_contexts (list[(EventBase, EventContext)]): events events_and_contexts (list[(EventBase, EventContext)]): events
we are persisting 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 backfilled (bool): True if the events were backfilled
""" """
@ -1166,6 +1174,7 @@ class EventsStore(SQLBaseStore):
self._set_push_actions_for_event_and_users_txn( self._set_push_actions_for_event_and_users_txn(
txn, txn,
events_and_contexts=events_and_contexts, events_and_contexts=events_and_contexts,
all_events_and_contexts=all_events_and_contexts,
) )
if not events_and_contexts: if not events_and_contexts: