summary refs log tree commit diff
path: root/synapse/storage/events.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2016-04-12 13:30:30 +0100
committerErik Johnston <erik@matrix.org>2016-04-12 13:30:30 +0100
commit318cb1f2078353525137ca095ba7624735301a0c (patch)
tree688d57f0af0403757482f01c1bb0c53694b0387d /synapse/storage/events.py
parentFix the rule_id for .m.rule.invite_for_me (#715) (diff)
parentMore comments (diff)
downloadsynapse-318cb1f2078353525137ca095ba7624735301a0c.tar.xz
Merge pull request #717 from matrix-org/erikj/backfill_state
Check if we've already backfilled events
Diffstat (limited to 'synapse/storage/events.py')
-rw-r--r--synapse/storage/events.py23
1 files changed, 20 insertions, 3 deletions
diff --git a/synapse/storage/events.py b/synapse/storage/events.py

index 308a2c9b02..21487724ed 100644 --- a/synapse/storage/events.py +++ b/synapse/storage/events.py
@@ -118,7 +118,7 @@ class EventsStore(SQLBaseStore): @defer.inlineCallbacks @log_function - def persist_event(self, event, context, current_state=None): + def persist_event(self, event, context, current_state=None, backfilled=False): try: with self._stream_id_gen.get_next() as stream_ordering: @@ -131,6 +131,7 @@ class EventsStore(SQLBaseStore): event=event, context=context, current_state=current_state, + backfilled=backfilled, ) except _RollbackButIsFineException: pass @@ -195,7 +196,7 @@ class EventsStore(SQLBaseStore): defer.returnValue({e.event_id: e for e in events}) @log_function - def _persist_event_txn(self, txn, event, context, current_state): + def _persist_event_txn(self, txn, event, context, current_state, backfilled=False): # We purposefully do this first since if we include a `current_state` # key, we *want* to update the `current_state_events` table if current_state: @@ -238,7 +239,7 @@ class EventsStore(SQLBaseStore): return self._persist_events_txn( txn, [(event, context)], - backfilled=False, + backfilled=backfilled, ) @log_function @@ -543,6 +544,22 @@ class EventsStore(SQLBaseStore): (event.event_id, event.redacts) ) + @defer.inlineCallbacks + def have_events_in_timeline(self, event_ids): + """Given a list of event ids, check if we have already processed and + stored them as non outliers. + """ + rows = yield self._simple_select_many_batch( + table="events", + retcols=("event_id",), + column="event_id", + iterable=list(event_ids), + keyvalues={"outlier": False}, + desc="have_events_in_timeline", + ) + + defer.returnValue(set(r["event_id"] for r in rows)) + def have_events(self, event_ids): """Given a list of event ids, check if we have already processed them.