diff options
author | Erik Johnston <erik@matrix.org> | 2020-02-19 15:47:11 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2020-02-19 15:47:11 +0000 |
commit | 7b7c3cedf2fdc0d0c05bbc651e0ff5b59921c3a2 (patch) | |
tree | 135c91e7079613aa99185100b3df26657f459cbb /synapse | |
parent | Freeze allocated objects on startup. (#6953) (diff) | |
download | synapse-7b7c3cedf2fdc0d0c05bbc651e0ff5b59921c3a2.tar.xz |
Minor perf fixes to `get_auth_chain_ids`.
Diffstat (limited to '')
-rw-r--r-- | synapse/storage/data_stores/main/event_federation.py | 10 | ||||
-rw-r--r-- | synapse/storage/database.py | 2 |
2 files changed, 5 insertions, 7 deletions
diff --git a/synapse/storage/data_stores/main/event_federation.py b/synapse/storage/data_stores/main/event_federation.py index e16da2577d..750ec1b70d 100644 --- a/synapse/storage/data_stores/main/event_federation.py +++ b/synapse/storage/data_stores/main/event_federation.py @@ -16,7 +16,6 @@ import itertools import logging from typing import List, Optional, Set -from six.moves import range from six.moves.queue import Empty, PriorityQueue from twisted.internet import defer @@ -28,6 +27,7 @@ from synapse.storage.data_stores.main.events_worker import EventsWorkerStore from synapse.storage.data_stores.main.signatures import SignatureWorkerStore from synapse.storage.database import Database from synapse.util.caches.descriptors import cached +from synapse.util.iterutils import batch_iter logger = logging.getLogger(__name__) @@ -88,14 +88,12 @@ class EventFederationWorkerStore(EventsWorkerStore, SignatureWorkerStore, SQLBas front = set(event_ids) while front: new_front = set() - front_list = list(front) - chunks = [front_list[x : x + 100] for x in range(0, len(front), 100)] - for chunk in chunks: + for chunk in batch_iter(front, 100): clause, args = make_in_list_sql_clause( txn.database_engine, "event_id", chunk ) - txn.execute(base_sql + clause, list(args)) - new_front.update([r[0] for r in txn]) + txn.execute(base_sql + clause, args) + new_front.update(r[0] for r in txn) new_front -= ignore_events new_front -= results diff --git a/synapse/storage/database.py b/synapse/storage/database.py index 3eeb2f7c04..6dcb5c04da 100644 --- a/synapse/storage/database.py +++ b/synapse/storage/database.py @@ -1504,7 +1504,7 @@ class Database(object): def make_in_list_sql_clause( database_engine, column: str, iterable: Iterable -) -> Tuple[str, Iterable]: +) -> Tuple[str, list]: """Returns an SQL clause that checks the given column is in the iterable. On SQLite this expands to `column IN (?, ?, ...)`, whereas on Postgres |