diff --git a/synapse/events/snapshot.py b/synapse/events/snapshot.py
index 6b70ea94d1..0bca4c188b 100644
--- a/synapse/events/snapshot.py
+++ b/synapse/events/snapshot.py
@@ -248,7 +248,7 @@ class EventContext(UnpersistedEventContextBase):
@tag_args
async def get_current_state_ids(
self, state_filter: Optional["StateFilter"] = None
- ) -> Optional[StateMap[str]]:
+ ) -> StateMap[str]:
"""
Gets the room state map, including this event - ie, the state in ``state_group``
@@ -256,13 +256,12 @@ class EventContext(UnpersistedEventContextBase):
not make it into the room state. This method will raise an exception if
``rejected`` is set.
+ It is also an error to access this for an outlier event.
+
Arg:
state_filter: specifies the type of state event to fetch from DB, example: EventTypes.JoinRules
Returns:
- Returns None if state_group is None, which happens when the associated
- event is an outlier.
-
Maps a (type, state_key) to the event ID of the state event matching
this tuple.
"""
@@ -300,7 +299,8 @@ class EventContext(UnpersistedEventContextBase):
this tuple.
"""
- assert self.state_group_before_event is not None
+ if self.state_group_before_event is None:
+ return {}
return await self._storage.state.get_state_ids_for_group(
self.state_group_before_event, state_filter
)
@@ -504,7 +504,7 @@ class UnpersistedEventContext(UnpersistedEventContextBase):
def _encode_state_group_delta(
- state_group_delta: Dict[Tuple[int, int], StateMap[str]]
+ state_group_delta: Dict[Tuple[int, int], StateMap[str]],
) -> List[Tuple[int, int, Optional[List[Tuple[str, str, str]]]]]:
if not state_group_delta:
return []
@@ -517,7 +517,7 @@ def _encode_state_group_delta(
def _decode_state_group_delta(
- input: List[Tuple[int, int, List[Tuple[str, str, str]]]]
+ input: List[Tuple[int, int, List[Tuple[str, str, str]]]],
) -> Dict[Tuple[int, int], StateMap[str]]:
if not input:
return {}
@@ -544,7 +544,7 @@ def _encode_state_dict(
def _decode_state_dict(
- input: Optional[List[Tuple[str, str, str]]]
+ input: Optional[List[Tuple[str, str, str]]],
) -> Optional[StateMap[str]]:
"""Decodes a state dict encoded using `_encode_state_dict` above"""
if input is None:
|