diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2020-05-26 11:43:17 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-26 11:43:17 +0100 |
commit | edd9a7214c467e96f5a694598b2fbcfae3ac2912 (patch) | |
tree | 66d65b666788442ee0b42dd21f05231440d0f491 /synapse/storage/prepare_database.py | |
parent | Fix incorrect exception handling in KeyUploadServlet.on_POST (#7563) (diff) | |
download | synapse-edd9a7214c467e96f5a694598b2fbcfae3ac2912.tar.xz |
Replace device_27_unique_idx bg update with a fg one (#7562)
The bg update never managed to complete, because it kept being interrupted by transactions which want to take a lock. Just doing it in the foreground isn't that bad, and is a good deal simpler.
Diffstat (limited to 'synapse/storage/prepare_database.py')
-rw-r--r-- | synapse/storage/prepare_database.py | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/synapse/storage/prepare_database.py b/synapse/storage/prepare_database.py index 640f242584..9afc145340 100644 --- a/synapse/storage/prepare_database.py +++ b/synapse/storage/prepare_database.py @@ -19,10 +19,12 @@ import logging import os import re from collections import Counter +from typing import TextIO import attr from synapse.storage.engines.postgres import PostgresEngine +from synapse.storage.types import Cursor logger = logging.getLogger(__name__) @@ -479,8 +481,7 @@ def _apply_module_schema_files(cur, database_engine, modname, names_and_streams) ) logger.info("applying schema %s for %s", name, modname) - for statement in get_statements(stream): - cur.execute(statement) + execute_statements_from_stream(cur, stream) # Mark as done. cur.execute( @@ -538,8 +539,12 @@ def get_statements(f): def executescript(txn, schema_path): with open(schema_path, "r") as f: - for statement in get_statements(f): - txn.execute(statement) + execute_statements_from_stream(txn, f) + + +def execute_statements_from_stream(cur: Cursor, f: TextIO): + for statement in get_statements(f): + cur.execute(statement) def _get_or_create_schema_state(txn, database_engine): |