forked from MirrorHub/synapse
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:
|
if old_state_groups == new_state_groups:
|
||||||
defer.returnValue((None, None))
|
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
|
# Now that we have calculated new_state_groups we need to get
|
||||||
# their state IDs so we can resolve to a single state set.
|
# their state IDs so we can resolve to a single state set.
|
||||||
missing_state = new_state_groups - set(state_groups_map)
|
missing_state = new_state_groups - set(state_groups_map)
|
||||||
|
@ -639,19 +657,7 @@ class EventsStore(EventsWorkerStore):
|
||||||
state_groups_map.update(group_to_state)
|
state_groups_map.update(group_to_state)
|
||||||
|
|
||||||
if len(new_state_groups) == 1:
|
if len(new_state_groups) == 1:
|
||||||
# If there is only one state group, then we know what the current
|
defer.returnValue((state_groups_map[new_state_groups.pop()], None))
|
||||||
# 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))
|
|
||||||
|
|
||||||
# Ok, we need to defer to the state handler to resolve our state sets.
|
# Ok, we need to defer to the state handler to resolve our state sets.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue