diff options
author | Richard van der Hoff <richard@matrix.org> | 2019-11-25 17:51:39 +0000 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2019-11-25 17:51:39 +0000 |
commit | 07929bd62f32c2e3ef244e9846364512de871bf7 (patch) | |
tree | 65226f6ecd4e2444e07e671b9158a59e90144f8e /synapse/storage/data_stores | |
parent | Improve the performance of structured logging (#6322) (diff) | |
parent | 1.6.0rc2 (diff) | |
download | synapse-07929bd62f32c2e3ef244e9846364512de871bf7.tar.xz |
Merge tag 'v1.6.0rc2' into develop
Synapse 1.6.0rc2 (2019-11-25) ============================= Bugfixes -------- - Fix a bug which could cause the background database update hander for event labels to get stuck in a loop raising exceptions. ([\#6407](https://github.com/matrix-org/synapse/issues/6407))
Diffstat (limited to 'synapse/storage/data_stores')
-rw-r--r-- | synapse/storage/data_stores/main/events_bg_updates.py | 43 |
1 files changed, 25 insertions, 18 deletions
diff --git a/synapse/storage/data_stores/main/events_bg_updates.py b/synapse/storage/data_stores/main/events_bg_updates.py index 0ed59ef48e..aa87f9abc5 100644 --- a/synapse/storage/data_stores/main/events_bg_updates.py +++ b/synapse/storage/data_stores/main/events_bg_updates.py @@ -530,24 +530,31 @@ class EventsBackgroundUpdatesStore(BackgroundUpdateStore): nbrows = 0 last_row_event_id = "" for (event_id, event_json_raw) in results: - event_json = json.loads(event_json_raw) - - self._simple_insert_many_txn( - txn=txn, - table="event_labels", - values=[ - { - "event_id": event_id, - "label": label, - "room_id": event_json["room_id"], - "topological_ordering": event_json["depth"], - } - for label in event_json["content"].get( - EventContentFields.LABELS, [] - ) - if isinstance(label, str) - ], - ) + try: + event_json = json.loads(event_json_raw) + + self._simple_insert_many_txn( + txn=txn, + table="event_labels", + values=[ + { + "event_id": event_id, + "label": label, + "room_id": event_json["room_id"], + "topological_ordering": event_json["depth"], + } + for label in event_json["content"].get( + EventContentFields.LABELS, [] + ) + if isinstance(label, str) + ], + ) + except Exception as e: + logger.warning( + "Unable to load event %s (no labels will be imported): %s", + event_id, + e, + ) nbrows += 1 last_row_event_id = event_id |