Merge pull request #4017 from matrix-org/rav/optimise_filter_events_for_server

Optimisation for filter_events_for_server
This commit is contained in:
Richard van der Hoff 2018-10-09 09:48:56 +01:00 committed by GitHub
commit 2418e7811a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 7 deletions

1
changelog.d/4017.misc Normal file
View file

@ -0,0 +1 @@
Optimisation for serving federation requests

View file

@ -324,14 +324,13 @@ def filter_events_for_server(store, server_name, events):
# server's domain. # server's domain.
# #
# event_to_state_ids contains lots of duplicates, so it turns out to be # event_to_state_ids contains lots of duplicates, so it turns out to be
# cheaper to build a complete set of unique # cheaper to build a complete event_id => (type, state_key) dict, and then
# ((type, state_key), event_id) tuples, and then filter out the ones we # filter out the ones we don't want
# don't want.
# #
state_key_to_event_id_set = { event_id_to_state_key = {
e event_id: key
for key_to_eid in itervalues(event_to_state_ids) for key_to_eid in itervalues(event_to_state_ids)
for e in key_to_eid.items() for key, event_id in iteritems(key_to_eid)
} }
def include(typ, state_key): def include(typ, state_key):
@ -346,7 +345,7 @@ def filter_events_for_server(store, server_name, events):
event_map = yield store.get_events([ event_map = yield store.get_events([
e_id e_id
for key, e_id in state_key_to_event_id_set for e_id, key in iteritems(event_id_to_state_key)
if include(key[0], key[1]) if include(key[0], key[1])
]) ])