mirror of
https://github.com/element-hq/synapse
synced 2024-09-04 05:30:07 +00:00
Fix get destinations to catch up query. (#9114)
t was doing a sequential scan on `destination_rooms`, which took minutes.
This commit is contained in:
parent
7036e24e98
commit
631dd06f2c
2 changed files with 12 additions and 13 deletions
1
changelog.d/9114.bugfix
Normal file
1
changelog.d/9114.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Fix bug in federation catchup logic that caused outbound federation to be delayed for large servers after start up. Introduced in v1.21.0.
|
|
@ -464,19 +464,17 @@ class TransactionStore(TransactionWorkerStore):
|
||||||
txn: LoggingTransaction, now_time_ms: int, after_destination: Optional[str]
|
txn: LoggingTransaction, now_time_ms: int, after_destination: Optional[str]
|
||||||
) -> List[str]:
|
) -> List[str]:
|
||||||
q = """
|
q = """
|
||||||
SELECT destination FROM destinations
|
SELECT DISTINCT destination FROM destinations
|
||||||
WHERE destination IN (
|
INNER JOIN destination_rooms USING (destination)
|
||||||
SELECT destination FROM destination_rooms
|
WHERE
|
||||||
WHERE destination_rooms.stream_ordering >
|
stream_ordering > last_successful_stream_ordering
|
||||||
destinations.last_successful_stream_ordering
|
AND destination > ?
|
||||||
)
|
AND (
|
||||||
AND destination > ?
|
retry_last_ts IS NULL OR
|
||||||
AND (
|
retry_last_ts + retry_interval < ?
|
||||||
retry_last_ts IS NULL OR
|
)
|
||||||
retry_last_ts + retry_interval < ?
|
ORDER BY destination
|
||||||
)
|
LIMIT 25
|
||||||
ORDER BY destination
|
|
||||||
LIMIT 25
|
|
||||||
"""
|
"""
|
||||||
txn.execute(
|
txn.execute(
|
||||||
q,
|
q,
|
||||||
|
|
Loading…
Reference in a new issue