summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2015-06-22 18:06:13 +0100
committerErik Johnston <erik@matrix.org>2015-06-22 18:06:13 +0100
commit19f0497ac319a7e6797a38d00e8aa1e5dd62948e (patch)
tree32b3e2c81c97c5f8566786f061e649ac6cd21bea
parentDon't update current_state_events for outliers (diff)
downloadsynapse-19f0497ac319a7e6797a38d00e8aa1e5dd62948e.tar.xz
Batch outside transactions
-rw-r--r--synapse/storage/events.py33
1 files changed, 13 insertions, 20 deletions
diff --git a/synapse/storage/events.py b/synapse/storage/events.py
index 29491dc947..2e7ef9a93b 100644
--- a/synapse/storage/events.py
+++ b/synapse/storage/events.py
@@ -70,13 +70,19 @@ class EventsStore(SQLBaseStore):
             for (event, _), stream in zip(events_and_contexts, stream_orderings):
                 event.internal_metadata.stream_ordering = stream
 
-            yield self.runInteraction(
-                "persist_events",
-                self._persist_events_txn,
-                events_and_contexts=events_and_contexts,
-                backfilled=backfilled,
-                is_new_state=is_new_state,
-            )
+            chunks = [
+                events_and_contexts[x:x+100]
+                for x in xrange(0, len(events_and_contexts), 100)
+            ]
+
+            for chunk in chunks:
+                yield self.runInteraction(
+                    "persist_events",
+                    self._persist_events_txn,
+                    events_and_contexts=chunk,
+                    backfilled=backfilled,
+                    is_new_state=is_new_state,
+                )
 
     @defer.inlineCallbacks
     @log_function
@@ -416,19 +422,6 @@ class EventsStore(SQLBaseStore):
     def _persist_events_txn(self, txn, events_and_contexts, backfilled,
                             is_new_state=True):
 
-        if len(events_and_contexts) > 100:
-            chunks = [
-                events_and_contexts[x:x+100]
-                for x in xrange(0, len(events_and_contexts), 100)
-            ]
-
-            for chunk in chunks:
-                self._persist_events_txn(
-                    txn,
-                    chunk, backfilled, is_new_state,
-                )
-            return
-
         # Remove the any existing cache entries for the event_ids
         for event, _ in events_and_contexts:
             txn.call_after(self._invalidate_get_event_cache, event.event_id)