Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Commit

Permalink
Make get_joined_users faster
Browse files Browse the repository at this point in the history
  • Loading branch information
erikjohnston committed May 3, 2017
1 parent 3033261 commit 7ebf518
Showing 1 changed file with 38 additions and 16 deletions.
54 changes: 38 additions & 16 deletions synapse/storage/roommember.py
Original file line number Diff line number Diff line change
Expand Up @@ -417,25 +417,47 @@ def _get_joined_users_from_context(self, room_id, state_group, current_state_ids
if key[0] == EventTypes.Member
]

rows = yield self._simple_select_many_batch(
table="room_memberships",
column="event_id",
iterable=member_event_ids,
retcols=['user_id', 'display_name', 'avatar_url'],
keyvalues={
"membership": Membership.JOIN,
},
batch_size=500,
desc="_get_joined_users_from_context",
event_map = self._get_events_from_cache(
member_event_ids,
allow_rejected=False,
)

users_in_room = {
to_ascii(row["user_id"]): ProfileInfo(
avatar_url=to_ascii(row["avatar_url"]),
display_name=to_ascii(row["display_name"]),
missing_member_event_ids = []
users_in_room = {}
for event_id, ev_entry in event_map.iteritems():
if event_id:
if ev_entry.event.membership == Membership.JOIN:
users_in_room[to_ascii(ev_entry.event.state_key)] = ProfileInfo(
display_name=to_ascii(
ev_entry.event.content.get("displayname", None)
),
avatar_url=to_ascii(
ev_entry.event.content.get("avatar_url", None)
),
)
else:
missing_member_event_ids.append(event_id)

if missing_member_event_ids:
rows = yield self._simple_select_many_batch(
table="room_memberships",
column="event_id",
iterable=member_event_ids,
retcols=('user_id', 'display_name', 'avatar_url',),
keyvalues={
"membership": Membership.JOIN,
},
batch_size=500,
desc="_get_joined_users_from_context",
)
for row in rows
}

users_in_room.update({
to_ascii(row["user_id"]): ProfileInfo(
avatar_url=to_ascii(row["avatar_url"]),
display_name=to_ascii(row["display_name"]),
)
for row in rows
})

if event is not None and event.type == EventTypes.Member:
if event.membership == Membership.JOIN:
Expand Down

0 comments on commit 7ebf518

Please sign in to comment.