diff options
author | Richard van der Hoff <richard@matrix.org> | 2019-06-03 18:07:19 +0100 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2019-06-04 00:16:56 +0100 |
commit | c5d60eadd5949ab4c12857e0830eb0afbb857f72 (patch) | |
tree | dc95812fe39f653d013842f466fceb905c9ff930 /synapse | |
parent | Don't bomb out on direct key fetches as soon as one fails (diff) | |
download | synapse-c5d60eadd5949ab4c12857e0830eb0afbb857f72.tar.xz |
Notary server: make requests to origins in parallel
... else we're guaranteed to time out.
Diffstat (limited to 'synapse')
-rw-r--r-- | synapse/crypto/keyring.py | 10 | ||||
-rw-r--r-- | synapse/rest/key/v2/remote_key_resource.py | 12 |
2 files changed, 11 insertions, 11 deletions
diff --git a/synapse/crypto/keyring.py b/synapse/crypto/keyring.py index 5660c96023..6dae713ebc 100644 --- a/synapse/crypto/keyring.py +++ b/synapse/crypto/keyring.py @@ -751,7 +751,15 @@ class ServerKeyFetcher(BaseV2KeyFetcher): self.client = hs.get_http_client() def get_keys(self, keys_to_fetch): - """see KeyFetcher.get_keys""" + """ + Args: + keys_to_fetch (dict[str, iterable[str]]): + the keys to be fetched. server_name -> key_ids + + Returns: + Deferred[dict[str, dict[str, synapse.storage.keys.FetchKeyResult|None]]]: + map from server_name -> key_id -> FetchKeyResult + """ results = {} diff --git a/synapse/rest/key/v2/remote_key_resource.py b/synapse/rest/key/v2/remote_key_resource.py index 21c3c807b9..8a730bbc35 100644 --- a/synapse/rest/key/v2/remote_key_resource.py +++ b/synapse/rest/key/v2/remote_key_resource.py @@ -20,7 +20,7 @@ from twisted.web.resource import Resource from twisted.web.server import NOT_DONE_YET from synapse.api.errors import Codes, SynapseError -from synapse.crypto.keyring import KeyLookupError, ServerKeyFetcher +from synapse.crypto.keyring import ServerKeyFetcher from synapse.http.server import respond_with_json_bytes, wrap_json_request_handler from synapse.http.servlet import parse_integer, parse_json_object_from_request @@ -215,15 +215,7 @@ class RemoteKey(Resource): json_results.add(bytes(result["key_json"])) if cache_misses and query_remote_on_cache_miss: - for server_name, key_ids in cache_misses.items(): - try: - yield self.fetcher.get_server_verify_key_v2_direct( - server_name, key_ids - ) - except KeyLookupError as e: - logger.info("Failed to fetch key: %s", e) - except Exception: - logger.exception("Failed to get key for %r", server_name) + yield self.fetcher.get_keys(cache_misses) yield self.query_keys( request, query, query_remote_on_cache_miss=False ) |