diff --git a/synapse/storage/event_federation.py b/synapse/storage/event_federation.py
index bc90e17c63..989ad340b0 100644
--- a/synapse/storage/event_federation.py
+++ b/synapse/storage/event_federation.py
@@ -331,7 +331,10 @@ class EventFederationStore(SQLBaseStore):
txn.executemany(
query,
- [(ev.event_id, ev.room_id, ev.event_id) for ev in events]
+ [
+ (ev.event_id, ev.room_id, ev.event_id) for ev in events
+ if not ev.internal_metadata.is_outlier()
+ ]
)
query = (
@@ -358,7 +361,10 @@ class EventFederationStore(SQLBaseStore):
)
txn.executemany(
query,
- [(ev.event_id, ev.room_id) for ev in events]
+ [
+ (ev.event_id, ev.room_id) for ev in events
+ if not ev.internal_metadata.is_outlier()
+ ]
)
for room_id in events_by_room:
diff --git a/synapse/storage/state.py b/synapse/storage/state.py
index c9110e6304..9630efcfcc 100644
--- a/synapse/storage/state.py
+++ b/synapse/storage/state.py
@@ -403,8 +403,15 @@ class StateStore(SQLBaseStore):
state_dict = results[group]
for event_id in state_ids:
- state_event = state_events[event_id]
- state_dict[(state_event.type, state_event.state_key)] = state_event
+ try:
+ state_event = state_events[event_id]
+ state_dict[(state_event.type, state_event.state_key)] = state_event
+ except KeyError:
+ # Hmm. So we do don't have that state event? Interesting.
+ logger.warn(
+ "Can't find state event %r for state group %r",
+ event_id, group,
+ )
self._state_group_cache.update(
cache_seq_num,
|