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

Back out perf regression from get_cross_signing_keys_from_cache. #6494

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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(
neilisfragile marked this conversation as resolved.
Show resolved Hide resolved
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"
)