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,8 +439,7 @@ class EventsStore(EventsWorkerStore):
|
|||
delta = yield self._calculate_state_delta(
|
||||
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(
|
||||
"persist_events",
|
||||
|
@ -655,21 +654,14 @@ class EventsStore(EventsWorkerStore):
|
|||
"""
|
||||
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 = {
|
||||
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 = {
|
||||
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))
|
||||
|
|
Loading…
Reference in New Issue