Back out perf regression from get_cross_signing_keys_from_cache. (#6494)

Back out cross-signing code added in Synapse 1.5.0, which caused a performance regression.
This commit is contained in:
Neil Johnson 2019-12-09 13:59:27 +00:00 committed by GitHub
parent 30e9adf32f
commit adfdd82b21
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 20 additions and 30 deletions

1
changelog.d/6494.bugfix Normal file
View file

@ -0,0 +1 @@
Back out cross-signing code added in Synapse 1.5.0, which caused a performance regression.

View file

@ -264,7 +264,6 @@ class E2eKeysHandler(object):
return ret return ret
@defer.inlineCallbacks
def get_cross_signing_keys_from_cache(self, query, from_user_id): def get_cross_signing_keys_from_cache(self, query, from_user_id):
"""Get cross-signing keys for users from the database """Get cross-signing keys for users from the database
@ -284,35 +283,14 @@ class E2eKeysHandler(object):
self_signing_keys = {} self_signing_keys = {}
user_signing_keys = {} user_signing_keys = {}
for user_id in query: # Currently a stub, implementation coming in https://github.com/matrix-org/synapse/pull/6486
# XXX: consider changing the store functions to allow querying return defer.succeed(
# multiple users simultaneously. {
key = yield self.store.get_e2e_cross_signing_key( "master_keys": master_keys,
user_id, "master", from_user_id "self_signing_keys": self_signing_keys,
) "user_signing_keys": user_signing_keys,
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,
}
@trace @trace
@defer.inlineCallbacks @defer.inlineCallbacks

View file

@ -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 # Blacklisted due to https://github.com/matrix-org/matrix-doc/pull/2314 removing
# this requirement from the spec # this requirement from the spec
Inbound federation of state requires event_id as a mandatory paramater 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

View file

@ -183,6 +183,10 @@ class E2eKeysHandlerTestCase(unittest.TestCase):
) )
self.assertDictEqual(devices["master_keys"], {local_user: keys2["master_key"]}) 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 @defer.inlineCallbacks
def test_reupload_signatures(self): def test_reupload_signatures(self):
"""re-uploading a signature should not fail""" """re-uploading a signature should not fail"""
@ -503,3 +507,7 @@ class E2eKeysHandlerTestCase(unittest.TestCase):
], ],
other_master_key["signatures"][local_user]["ed25519:" + usersigning_pubkey], other_master_key["signatures"][local_user]["ed25519:" + usersigning_pubkey],
) )
test_upload_signatures.skip = (
"Disabled waiting on #https://github.com/matrix-org/synapse/pull/6486"
)