mirror of
https://github.com/element-hq/synapse
synced 2024-09-29 15:52:43 +00:00
Don't try and resync devices for down hosts (#17273)
It's just a waste of time if we won't even query the remote host as its marked as down.
This commit is contained in:
parent
3f06bbc0ac
commit
a963f579de
2 changed files with 19 additions and 6 deletions
1
changelog.d/17273.misc
Normal file
1
changelog.d/17273.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Don't try and resync devices for remote users whose servers are marked as down.
|
|
@ -45,7 +45,10 @@ from synapse.types import (
|
||||||
from synapse.util import json_decoder
|
from synapse.util import json_decoder
|
||||||
from synapse.util.async_helpers import Linearizer, concurrently_execute
|
from synapse.util.async_helpers import Linearizer, concurrently_execute
|
||||||
from synapse.util.cancellation import cancellable
|
from synapse.util.cancellation import cancellable
|
||||||
from synapse.util.retryutils import NotRetryingDestination
|
from synapse.util.retryutils import (
|
||||||
|
NotRetryingDestination,
|
||||||
|
filter_destinations_by_retry_limiter,
|
||||||
|
)
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from synapse.server import HomeServer
|
from synapse.server import HomeServer
|
||||||
|
@ -268,10 +271,8 @@ class E2eKeysHandler:
|
||||||
"%d destinations to query devices for", len(remote_queries_not_in_cache)
|
"%d destinations to query devices for", len(remote_queries_not_in_cache)
|
||||||
)
|
)
|
||||||
|
|
||||||
async def _query(
|
async def _query(destination: str) -> None:
|
||||||
destination_queries: Tuple[str, Dict[str, Iterable[str]]]
|
queries = remote_queries_not_in_cache[destination]
|
||||||
) -> None:
|
|
||||||
destination, queries = destination_queries
|
|
||||||
return await self._query_devices_for_destination(
|
return await self._query_devices_for_destination(
|
||||||
results,
|
results,
|
||||||
cross_signing_keys,
|
cross_signing_keys,
|
||||||
|
@ -281,9 +282,20 @@ class E2eKeysHandler:
|
||||||
timeout,
|
timeout,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Only try and fetch keys for destinations that are not marked as
|
||||||
|
# down.
|
||||||
|
filtered_destinations = await filter_destinations_by_retry_limiter(
|
||||||
|
remote_queries_not_in_cache.keys(),
|
||||||
|
self.clock,
|
||||||
|
self.store,
|
||||||
|
# Let's give an arbitrary grace period for those hosts that are
|
||||||
|
# only recently down
|
||||||
|
retry_due_within_ms=60 * 1000,
|
||||||
|
)
|
||||||
|
|
||||||
await concurrently_execute(
|
await concurrently_execute(
|
||||||
_query,
|
_query,
|
||||||
remote_queries_not_in_cache.items(),
|
filtered_destinations,
|
||||||
10,
|
10,
|
||||||
delay_cancellation=True,
|
delay_cancellation=True,
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue