mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-08-02 18:36:03 -04:00
Refactor EventContext
(#12689)
Refactor how the `EventContext` class works, with the intention of reducing the amount of state we fetch from the DB during event processing. The idea here is to get rid of the cached `current_state_ids` and `prev_state_ids` that live in the `EventContext`, and instead defer straight to the database (and its caching). One change that may have a noticeable effect is that we now no longer prefill the `get_current_state_ids` cache on a state change. However, that query is relatively light, since its just a case of reading a table from the DB (unlike fetching state at an event which is more heavyweight). For deployments with workers this cache isn't even used. Part of #12684
This commit is contained in:
parent
c997bfb926
commit
c72d26c1e1
13 changed files with 70 additions and 200 deletions
|
@ -130,6 +130,7 @@ class StateHandler:
|
|||
self.state_store = hs.get_storage().state
|
||||
self.hs = hs
|
||||
self._state_resolution_handler = hs.get_state_resolution_handler()
|
||||
self._storage = hs.get_storage()
|
||||
|
||||
@overload
|
||||
async def get_current_state(
|
||||
|
@ -361,10 +362,10 @@ class StateHandler:
|
|||
|
||||
if not event.is_state():
|
||||
return EventContext.with_state(
|
||||
storage=self._storage,
|
||||
state_group_before_event=state_group_before_event,
|
||||
state_group=state_group_before_event,
|
||||
current_state_ids=state_ids_before_event,
|
||||
prev_state_ids=state_ids_before_event,
|
||||
state_delta_due_to_event={},
|
||||
prev_group=state_group_before_event_prev_group,
|
||||
delta_ids=deltas_to_state_group_before_event,
|
||||
partial_state=partial_state,
|
||||
|
@ -393,10 +394,10 @@ class StateHandler:
|
|||
)
|
||||
|
||||
return EventContext.with_state(
|
||||
storage=self._storage,
|
||||
state_group=state_group_after_event,
|
||||
state_group_before_event=state_group_before_event,
|
||||
current_state_ids=state_ids_after_event,
|
||||
prev_state_ids=state_ids_before_event,
|
||||
state_delta_due_to_event=delta_ids,
|
||||
prev_group=state_group_before_event,
|
||||
delta_ids=delta_ids,
|
||||
partial_state=partial_state,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue