diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2021-09-22 17:58:57 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-22 17:58:57 +0100 |
commit | 26f2bfedbf5493d8a69d1b38147b6236e7606cd3 (patch) | |
tree | 7e1886447a6293f0c5f6ac92778891b93df1d3b2 /synapse/state | |
parent | Treat "\u0000" as "\u0020" for the purposes of message search (message indexi... (diff) | |
download | synapse-26f2bfedbf5493d8a69d1b38147b6236e7606cd3.tar.xz |
Factor out a separate `EventContext.for_outlier` (#10883)
Constructing an EventContext for an outlier is actually really simple, and there's no sense in going via an `async` method in the `StateHandler`. This also means that we can resolve a bunch of FIXMEs.
Diffstat (limited to 'synapse/state')
-rw-r--r-- | synapse/state/__init__.py | 34 |
1 files changed, 4 insertions, 30 deletions
diff --git a/synapse/state/__init__.py b/synapse/state/__init__.py index 463ce58dae..c981df3f18 100644 --- a/synapse/state/__init__.py +++ b/synapse/state/__init__.py @@ -263,7 +263,9 @@ class StateHandler: async def compute_event_context( self, event: EventBase, old_state: Optional[Iterable[EventBase]] = None ) -> EventContext: - """Build an EventContext structure for the event. + """Build an EventContext structure for a non-outlier event. + + (for an outlier, call EventContext.for_outlier directly) This works out what the current state should be for the event, and generates a new state group if necessary. @@ -278,35 +280,7 @@ class StateHandler: The event context. """ - if event.internal_metadata.is_outlier(): - # If this is an outlier, then we know it shouldn't have any current - # state. Certainly store.get_current_state won't return any, and - # persisting the event won't store the state group. - - # FIXME: why do we populate current_state_ids? I thought the point was - # that we weren't supposed to have any state for outliers? - if old_state: - prev_state_ids = {(s.type, s.state_key): s.event_id for s in old_state} - if event.is_state(): - current_state_ids = dict(prev_state_ids) - key = (event.type, event.state_key) - current_state_ids[key] = event.event_id - else: - current_state_ids = prev_state_ids - else: - current_state_ids = {} - prev_state_ids = {} - - # We don't store state for outliers, so we don't generate a state - # group for it. - context = EventContext.with_state( - state_group=None, - state_group_before_event=None, - current_state_ids=current_state_ids, - prev_state_ids=prev_state_ids, - ) - - return context + assert not event.internal_metadata.is_outlier() # # first of all, figure out the state before the event |