mirror of
https://mau.dev/maunium/synapse.git
synced 2024-12-16 16:03:50 +01:00
Don't fetch state from the database unless needed
This commit is contained in:
parent
a79410e7b8
commit
811ac73a42
1 changed files with 19 additions and 13 deletions
|
@ -631,6 +631,24 @@ class EventsStore(EventsWorkerStore):
|
|||
if old_state_groups == new_state_groups:
|
||||
defer.returnValue((None, None))
|
||||
|
||||
if len(new_state_groups) == 1:
|
||||
# If there is only one state group, then we know what the current
|
||||
# state is.
|
||||
if len(old_state_groups) == 1:
|
||||
new_state_group = next(iter(new_state_groups))
|
||||
old_state_group = next(iter(old_state_groups))
|
||||
|
||||
delta_ids = state_group_deltas.get(
|
||||
(old_state_group, new_state_group,), None
|
||||
)
|
||||
if delta_ids is not None:
|
||||
# We have a delta from the existing to new current state,
|
||||
# so lets just return that. If we happen to already have
|
||||
# the current state in memory then lets also return that,
|
||||
# but it doesn't matter if we don't.
|
||||
new_state = state_groups_map.get(new_state_group)
|
||||
defer.returnValue((new_state, delta_ids))
|
||||
|
||||
# Now that we have calculated new_state_groups we need to get
|
||||
# their state IDs so we can resolve to a single state set.
|
||||
missing_state = new_state_groups - set(state_groups_map)
|
||||
|
@ -639,19 +657,7 @@ class EventsStore(EventsWorkerStore):
|
|||
state_groups_map.update(group_to_state)
|
||||
|
||||
if len(new_state_groups) == 1:
|
||||
# If there is only one state group, then we know what the current
|
||||
# state is.
|
||||
new_state_group = new_state_groups.pop()
|
||||
|
||||
delta_ids = None
|
||||
if len(old_state_groups) == 1:
|
||||
old_state_group = old_state_groups.pop()
|
||||
|
||||
delta_ids = state_group_deltas.get(
|
||||
(old_state_group, new_state_group,), None
|
||||
)
|
||||
|
||||
defer.returnValue((state_groups_map[new_state_group], delta_ids))
|
||||
defer.returnValue((state_groups_map[new_state_groups.pop()], None))
|
||||
|
||||
# Ok, we need to defer to the state handler to resolve our state sets.
|
||||
|
||||
|
|
Loading…
Reference in a new issue