Merge pull request #3592 from matrix-org/erikj/speed_up_calculate_state_delta
Speed up _calculate_state_delta
This commit is contained in:
commit
0a8e4f3af9
|
@ -0,0 +1 @@
|
||||||
|
Speed up calculating state deltas in persist_event loop
|
|
@ -439,7 +439,6 @@ class EventsStore(EventsWorkerStore):
|
||||||
delta = yield self._calculate_state_delta(
|
delta = yield self._calculate_state_delta(
|
||||||
room_id, current_state,
|
room_id, current_state,
|
||||||
)
|
)
|
||||||
if delta is not None:
|
|
||||||
state_delta_for_room[room_id] = delta
|
state_delta_for_room[room_id] = delta
|
||||||
|
|
||||||
yield self.runInteraction(
|
yield self.runInteraction(
|
||||||
|
@ -655,21 +654,14 @@ class EventsStore(EventsWorkerStore):
|
||||||
"""
|
"""
|
||||||
existing_state = yield self.get_current_state_ids(room_id)
|
existing_state = yield self.get_current_state_ids(room_id)
|
||||||
|
|
||||||
existing_events = set(itervalues(existing_state))
|
|
||||||
new_events = set(ev_id for ev_id in itervalues(current_state))
|
|
||||||
changed_events = existing_events ^ new_events
|
|
||||||
|
|
||||||
if not changed_events:
|
|
||||||
return
|
|
||||||
|
|
||||||
to_delete = {
|
to_delete = {
|
||||||
key: ev_id for key, ev_id in iteritems(existing_state)
|
key: ev_id for key, ev_id in iteritems(existing_state)
|
||||||
if ev_id in changed_events
|
if ev_id != current_state.get(key)
|
||||||
}
|
}
|
||||||
events_to_insert = (new_events - existing_events)
|
|
||||||
to_insert = {
|
to_insert = {
|
||||||
key: ev_id for key, ev_id in iteritems(current_state)
|
key: ev_id for key, ev_id in iteritems(current_state)
|
||||||
if ev_id in events_to_insert
|
if ev_id != existing_state.get(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
defer.returnValue((to_delete, to_insert))
|
defer.returnValue((to_delete, to_insert))
|
||||||
|
|
Loading…
Reference in New Issue