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

Commit

Permalink
Back out perf regression from get_cross_signing_keys_from_cache. (#6494)
Browse files Browse the repository at this point in the history
Back out cross-signing code added in Synapse 1.5.0, which caused a performance regression.
  • Loading branch information
neilisfragile authored Dec 9, 2019
1 parent 30e9adf commit adfdd82
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 30 deletions.
1 change: 1 addition & 0 deletions changelog.d/6494.bugfix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Back out cross-signing code added in Synapse 1.5.0, which caused a performance regression.
38 changes: 8 additions & 30 deletions synapse/handlers/e2e_keys.py
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,6 @@ def do_remote_query(destination):

return ret

@defer.inlineCallbacks
def get_cross_signing_keys_from_cache(self, query, from_user_id):
"""Get cross-signing keys for users from the database
Expand All @@ -284,35 +283,14 @@ def get_cross_signing_keys_from_cache(self, query, from_user_id):
self_signing_keys = {}
user_signing_keys = {}

for user_id in query:
# XXX: consider changing the store functions to allow querying
# multiple users simultaneously.
key = yield self.store.get_e2e_cross_signing_key(
user_id, "master", from_user_id
)
if key:
master_keys[user_id] = key

key = yield self.store.get_e2e_cross_signing_key(
user_id, "self_signing", from_user_id
)
if key:
self_signing_keys[user_id] = key

# users can see other users' master and self-signing keys, but can
# only see their own user-signing keys
if from_user_id == user_id:
key = yield self.store.get_e2e_cross_signing_key(
user_id, "user_signing", from_user_id
)
if key:
user_signing_keys[user_id] = key

return {
"master_keys": master_keys,
"self_signing_keys": self_signing_keys,
"user_signing_keys": user_signing_keys,
}
# Currently a stub, implementation coming in https://github.com/matrix-org/synapse/pull/6486
return defer.succeed(
{
"master_keys": master_keys,
"self_signing_keys": self_signing_keys,
"user_signing_keys": user_signing_keys,
}
)

@trace
@defer.inlineCallbacks
Expand Down
3 changes: 3 additions & 0 deletions sytest-blacklist
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,6 @@ New federated private chats get full presence information (SYN-115)
# Blacklisted due to https://github.com/matrix-org/matrix-doc/pull/2314 removing
# this requirement from the spec
Inbound federation of state requires event_id as a mandatory paramater

# Blacklisted until https://github.com/matrix-org/synapse/pull/6486 lands
Can upload self-signing keys
8 changes: 8 additions & 0 deletions tests/handlers/test_e2e_keys.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,10 @@ def test_replace_master_key(self):
)
self.assertDictEqual(devices["master_keys"], {local_user: keys2["master_key"]})

test_replace_master_key.skip = (
"Disabled waiting on #https://github.com/matrix-org/synapse/pull/6486"
)

@defer.inlineCallbacks
def test_reupload_signatures(self):
"""re-uploading a signature should not fail"""
Expand Down Expand Up @@ -503,3 +507,7 @@ def test_upload_signatures(self):
],
other_master_key["signatures"][local_user]["ed25519:" + usersigning_pubkey],
)

test_upload_signatures.skip = (
"Disabled waiting on #https://github.com/matrix-org/synapse/pull/6486"
)

0 comments on commit adfdd82

Please sign in to comment.