Dedupe requested event list in _get_events

This commit is contained in:
Erik Johnston 2016-03-18 14:31:31 +00:00
parent 384ee6eafb
commit 67ed8065db

View File

@ -526,6 +526,9 @@ class EventsStore(SQLBaseStore):
if not event_ids: if not event_ids:
defer.returnValue([]) defer.returnValue([])
event_id_list = event_ids
event_ids = set(event_ids)
event_map = self._get_events_from_cache( event_map = self._get_events_from_cache(
event_ids, event_ids,
check_redacted=check_redacted, check_redacted=check_redacted,
@ -535,23 +538,18 @@ class EventsStore(SQLBaseStore):
missing_events_ids = [e for e in event_ids if e not in event_map] missing_events_ids = [e for e in event_ids if e not in event_map]
if not missing_events_ids: if missing_events_ids:
defer.returnValue([ missing_events = yield self._enqueue_events(
event_map[e_id] for e_id in event_ids missing_events_ids,
if e_id in event_map and event_map[e_id] check_redacted=check_redacted,
]) get_prev_content=get_prev_content,
allow_rejected=allow_rejected,
)
missing_events = yield self._enqueue_events( event_map.update(missing_events)
missing_events_ids,
check_redacted=check_redacted,
get_prev_content=get_prev_content,
allow_rejected=allow_rejected,
)
event_map.update(missing_events)
defer.returnValue([ defer.returnValue([
event_map[e_id] for e_id in event_ids event_map[e_id] for e_id in event_id_list
if e_id in event_map and event_map[e_id] if e_id in event_map and event_map[e_id]
]) ])