mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-03 19:44:51 -04:00
Fix perspectives requests for multiple keys for the same server (#11440)
If we tried to request multiple keys for the same server, we would end up dropping some of those requests.
This commit is contained in:
parent
7b4e228e41
commit
9cd13c5f63
3 changed files with 91 additions and 11 deletions
|
@ -667,21 +667,25 @@ class PerspectivesKeyFetcher(BaseV2KeyFetcher):
|
|||
perspective_name,
|
||||
)
|
||||
|
||||
request: JsonDict = {}
|
||||
for queue_value in keys_to_fetch:
|
||||
# there may be multiple requests for each server, so we have to merge
|
||||
# them intelligently.
|
||||
request_for_server = {
|
||||
key_id: {
|
||||
"minimum_valid_until_ts": queue_value.minimum_valid_until_ts,
|
||||
}
|
||||
for key_id in queue_value.key_ids
|
||||
}
|
||||
request.setdefault(queue_value.server_name, {}).update(request_for_server)
|
||||
|
||||
logger.debug("Request to notary server %s: %s", perspective_name, request)
|
||||
|
||||
try:
|
||||
query_response = await self.client.post_json(
|
||||
destination=perspective_name,
|
||||
path="/_matrix/key/v2/query",
|
||||
data={
|
||||
"server_keys": {
|
||||
queue_value.server_name: {
|
||||
key_id: {
|
||||
"minimum_valid_until_ts": queue_value.minimum_valid_until_ts,
|
||||
}
|
||||
for key_id in queue_value.key_ids
|
||||
}
|
||||
for queue_value in keys_to_fetch
|
||||
}
|
||||
},
|
||||
data={"server_keys": request},
|
||||
)
|
||||
except (NotRetryingDestination, RequestSendFailed) as e:
|
||||
# these both have str() representations which we can't really improve upon
|
||||
|
@ -689,6 +693,10 @@ class PerspectivesKeyFetcher(BaseV2KeyFetcher):
|
|||
except HttpResponseException as e:
|
||||
raise KeyLookupError("Remote server returned an error: %s" % (e,))
|
||||
|
||||
logger.debug(
|
||||
"Response from notary server %s: %s", perspective_name, query_response
|
||||
)
|
||||
|
||||
keys: Dict[str, Dict[str, FetchKeyResult]] = {}
|
||||
added_keys: List[Tuple[str, str, FetchKeyResult]] = []
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue