Merge pull request #3592 from matrix-org/erikj/speed_up_calculate_state_delta

Speed up _calculate_state_delta
This commit is contained in:
Erik Johnston 2018-07-24 13:39:58 +01:00 committed by GitHub
commit 0a8e4f3af9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 12 deletions

1
changelog.d/3592.misc Normal file
View File

@ -0,0 +1 @@
Speed up calculating state deltas in persist_event loop

View File

@ -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))