diff options
author | Erik Johnston <erik@matrix.org> | 2015-06-01 14:55:02 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2015-06-01 14:59:53 +0100 |
commit | b6b8e2dcbfd11e9bcb7d13b9b653ee774ac709c8 (patch) | |
tree | 2387edf4170b6cb6992e43a444edf7275f62b886 | |
parent | Only log when we spend time in there (diff) | |
download | synapse-erikj/perf_get_room_members.tar.xz |
Also cache user_id -> UserID conversion github/erikj/perf_get_room_members erikj/perf_get_room_members
-rw-r--r-- | synapse/handlers/room.py | 11 | ||||
-rw-r--r-- | synapse/storage/events.py | 1 | ||||
-rw-r--r-- | synapse/storage/roommember.py | 7 |
3 files changed, 9 insertions, 10 deletions
diff --git a/synapse/handlers/room.py b/synapse/handlers/room.py index a86908695d..96969974c8 100644 --- a/synapse/handlers/room.py +++ b/synapse/handlers/room.py @@ -255,17 +255,8 @@ class RoomMemberHandler(BaseHandler): self.distributor.declare("user_joined_room") self.distributor.declare("user_left_room") - @defer.inlineCallbacks def get_room_members(self, room_id): - users = yield self.store.get_users_in_room(room_id) - - start = time.time() - users = [UserID.from_string(u) for u in users] - end = time.time() - - RoomMemberHandler.total_time += end-start - - defer.returnValue(users) + return self.store.get_user_objs_in_room(room_id) @defer.inlineCallbacks def fetch_room_distributions_into(self, room_id, localusers=None, diff --git a/synapse/storage/events.py b/synapse/storage/events.py index 20a8d81794..79cb52beb0 100644 --- a/synapse/storage/events.py +++ b/synapse/storage/events.py @@ -128,6 +128,7 @@ class EventsStore(SQLBaseStore): txn.call_after(self.get_current_state_for_key.invalidate_all) txn.call_after(self.get_rooms_for_user.invalidate_all) txn.call_after(self.get_users_in_room.invalidate, event.room_id) + txn.call_after(self.get_user_objs_in_room.invalidate, event.room_id) txn.call_after(self.get_joined_hosts_for_room.invalidate, event.room_id) txn.call_after(self.get_room_name_and_aliases, event.room_id) diff --git a/synapse/storage/roommember.py b/synapse/storage/roommember.py index d36a6c18a8..2c879d56d6 100644 --- a/synapse/storage/roommember.py +++ b/synapse/storage/roommember.py @@ -67,6 +67,7 @@ class RoomMemberStore(SQLBaseStore): txn.call_after(self.get_rooms_for_user.invalidate, target_user_id) txn.call_after(self.get_joined_hosts_for_room.invalidate, event.room_id) txn.call_after(self.get_users_in_room.invalidate, event.room_id) + txn.call_after(self.get_user_objs_in_room.invalidate, event.room_id) def get_room_member(self, user_id, room_id): """Retrieve the current state of a room member. @@ -101,6 +102,12 @@ class RoomMemberStore(SQLBaseStore): return [r["user_id"] for r in rows] return self.runInteraction("get_users_in_room", f) + @cached() + def get_user_objs_in_room(self, room_id): + return self.get_users_in_room(room_id).addCallback( + lambda users: [UserID.from_string(u) for u in users] + ) + def get_room_members(self, room_id, membership=None): """Retrieve the current room member list for a room. |