summary refs log tree commit diff
path: root/synapse/storage/data_stores
diff options
context:
space:
mode:
Diffstat (limited to 'synapse/storage/data_stores')
-rw-r--r--synapse/storage/data_stores/main/events_bg_updates.py23
1 files changed, 9 insertions, 14 deletions
diff --git a/synapse/storage/data_stores/main/events_bg_updates.py b/synapse/storage/data_stores/main/events_bg_updates.py
index 309bfcafe5..9714662c11 100644
--- a/synapse/storage/data_stores/main/events_bg_updates.py
+++ b/synapse/storage/data_stores/main/events_bg_updates.py
@@ -525,43 +525,38 @@ class EventsBackgroundUpdatesStore(BackgroundUpdateStore):
                 (last_event_id, batch_size),
             )
 
-            rows = self.cursor_to_dict(txn)
-            if not rows:
-                return True, 0
-
-            for row in rows:
-                event_id = row["event_id"]
-                event_json = json.loads(row["json"])
-
+            nbrows = 0
+            for (event_id, event_json) in txn:
                 self._simple_insert_many_txn(
                     txn=txn,
                     table="event_labels",
                     values=[
                         {
                             "event_id": event_id,
-                            "label": label,
+                            "label": str(label),
                             "room_id": event_json["room_id"],
                             "topological_ordering": event_json["depth"],
                         }
                         for label in event_json["content"].get(
                             EventContentFields.LABELS, []
                         )
+                        if label is not None
                     ],
                 )
 
+                nbrows += 1
+
             self._background_update_progress_txn(
                 txn, "event_store_labels", {"last_event_id": event_id}
             )
 
-            # We want to return true (to end the background update) only when
-            # the query returned with less rows than we asked for.
-            return len(rows) != batch_size, len(rows)
+            return nbrows
 
-        end, num_rows = yield self.runInteraction(
+        num_rows = yield self.runInteraction(
             desc="event_store_labels", func=_event_store_labels_txn
         )
 
-        if end:
+        if not num_rows:
             yield self._end_background_update("event_store_labels")
 
         return num_rows