summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2015-06-01 15:03:47 +0100
committerErik Johnston <erik@matrix.org>2015-06-01 15:03:47 +0100
commitd92b3884cc2017aeafddc50897365c108d28952e (patch)
treea31adf354807069b6f781c48e770ba627c68bdce
parentUse pyinstrument (diff)
parentAlso cache user_id -> UserID conversion (diff)
downloadsynapse-d92b3884cc2017aeafddc50897365c108d28952e.tar.xz
Merge branch 'erikj/perf_room_members_fix' of github.com:matrix-org/synapse into erikj/profile_rununtilconcurrent
-rw-r--r--contrib/systemd/log_config.yaml2
-rw-r--r--synapse/config/captcha.py4
-rw-r--r--synapse/events/__init__.py2
-rw-r--r--synapse/handlers/auth.py2
-rw-r--r--synapse/handlers/room.py4
-rw-r--r--synapse/http/server.py1
-rw-r--r--synapse/storage/events.py1
-rw-r--r--synapse/storage/roommember.py7
8 files changed, 17 insertions, 6 deletions
diff --git a/contrib/systemd/log_config.yaml b/contrib/systemd/log_config.yaml

index e16fb5456a..d85bdd1208 100644 --- a/contrib/systemd/log_config.yaml +++ b/contrib/systemd/log_config.yaml
@@ -21,3 +21,5 @@ handlers: root: level: INFO handlers: [journal] + +disable_existing_loggers: False diff --git a/synapse/config/captcha.py b/synapse/config/captcha.py
index d8fe577e34..ba221121cb 100644 --- a/synapse/config/captcha.py +++ b/synapse/config/captcha.py
@@ -26,6 +26,7 @@ class CaptchaConfig(Config): config["captcha_ip_origin_is_x_forwarded"] ) self.captcha_bypass_secret = config.get("captcha_bypass_secret") + self.recaptcha_siteverify_api = config["recaptcha_siteverify_api"] def default_config(self, config_dir_path, server_name): return """\ @@ -48,4 +49,7 @@ class CaptchaConfig(Config): # A secret key used to bypass the captcha test entirely. #captcha_bypass_secret: "YOUR_SECRET_HERE" + + # The API endpoint to use for verifying m.login.recaptcha responses. + recaptcha_siteverify_api: "https://www.google.com/recaptcha/api/siteverify" """ diff --git a/synapse/events/__init__.py b/synapse/events/__init__.py
index b2a904b408..39ce4f7c42 100644 --- a/synapse/events/__init__.py +++ b/synapse/events/__init__.py
@@ -131,7 +131,7 @@ class FrozenEvent(EventBase): if USE_FROZEN_DICTS: frozen_dict = freeze(event_dict) else: - frozen_dict = dict(event_dict) + frozen_dict = event_dict super(FrozenEvent, self).__init__( frozen_dict, diff --git a/synapse/handlers/auth.py b/synapse/handlers/auth.py
index 0cc28248a9..63071653a3 100644 --- a/synapse/handlers/auth.py +++ b/synapse/handlers/auth.py
@@ -188,7 +188,7 @@ class AuthHandler(BaseHandler): try: client = SimpleHttpClient(self.hs) resp_body = yield client.post_urlencoded_get_json( - "https://www.google.com/recaptcha/api/siteverify", + self.hs.config.recaptcha_siteverify_api, args={ 'secret': self.hs.config.recaptcha_private_key, 'response': user_response, diff --git a/synapse/handlers/room.py b/synapse/handlers/room.py
index 4bd027d9bb..31efba0a9c 100644 --- a/synapse/handlers/room.py +++ b/synapse/handlers/room.py
@@ -254,9 +254,7 @@ class RoomMemberHandler(BaseHandler): @defer.inlineCallbacks def get_room_members(self, room_id): - users = yield self.store.get_users_in_room(room_id) - - defer.returnValue([UserID.from_string(u) for u in 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/http/server.py b/synapse/http/server.py
index cdb9f9cefc..ae8f3b3972 100644 --- a/synapse/http/server.py +++ b/synapse/http/server.py
@@ -290,7 +290,6 @@ def respond_with_json(request, code, json_object, send_cors=False, json_bytes = encode_json( json_object, using_frozen_dicts=synapse.events.USE_FROZEN_DICTS ) - logger.debug("json_bytes: %r %r", json_object, json_bytes) return respond_with_json_bytes( request, code, json_bytes, 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.