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