Fix error when out of servers to sync partial state with (#13432)

so that we raise the intended error instead.

Signed-off-by: Sean Quah <seanq@matrix.org>
This commit is contained in:
Sean Quah 2022-08-02 12:12:44 +01:00 committed by GitHub
parent a2a867b521
commit 8d317f6da5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 2 deletions

1
changelog.d/13432.bugfix Normal file
View File

@ -0,0 +1 @@
Faster room joins: Fix error when running out of servers to sync partial state with, so that Synapse raises the intended error instead.

View File

@ -1543,15 +1543,16 @@ class FederationHandler:
# Make an infinite iterator of destinations to try. Once we find a working # Make an infinite iterator of destinations to try. Once we find a working
# destination, we'll stick with it until it flakes. # destination, we'll stick with it until it flakes.
destinations: Collection[str]
if initial_destination is not None: if initial_destination is not None:
# Move `initial_destination` to the front of the list. # Move `initial_destination` to the front of the list.
destinations = list(other_destinations) destinations = list(other_destinations)
if initial_destination in destinations: if initial_destination in destinations:
destinations.remove(initial_destination) destinations.remove(initial_destination)
destinations = [initial_destination] + destinations destinations = [initial_destination] + destinations
destination_iter = itertools.cycle(destinations)
else: else:
destination_iter = itertools.cycle(other_destinations) destinations = other_destinations
destination_iter = itertools.cycle(destinations)
# `destination` is the current remote homeserver we're pulling from. # `destination` is the current remote homeserver we're pulling from.
destination = next(destination_iter) destination = next(destination_iter)